尝试使用Oracle & SQL获取嵌套JSON

osh3o9ms  于 2023-01-12  发布在  Oracle
关注(0)|答案(1)|浏览(162)

因此,我的组织正在为我们的工作订单系统切换到一个基于云的公司。我已经在我们的标准数据连接器上工作了一段时间,一直没有达到我想要的结果。
这是我当前的SQL:

select oo.campus_desc AS INSTITUTION,
                   f.organization_level_6 AS ORGANIZATION,
                   f.organization_mc_desc AS ORG_DESC,
                   min(f.dept) AS DEPARTMENT 

from odsmgr.campus_official_org_all f
inner join odsmgr.campus_official_organization oo
on f.dept=oo.organization_code
group by  f.organization_level_6,  f.organization_mc_desc ,
oo.campus_desc

我尝试了几种方法,但我似乎无法将此版本的SQL切换到允许我嵌套数据的版本。理想情况下,只是对于初学者,我希望将所有信息嵌套在“INSTITION”的唯一值下。如果我能完成这么多工作,我有理由相信我将能够将修复应用到我的项目的其余部分。

nqwrtyyt

nqwrtyyt1#

如果没有数据和对预期输出的更清晰的描述,听起来就像您想要JSON_OBJECT和JSON_OBJECTAGG的组合,沿着如下(使用Oracle CTE创建一些虚拟数据)

with INSTITUTION as (select '1' as instId, 'TEST 1' as instName  from dual union select '2', 'TEST 2' from dual),
     ORGANISATION as (select '1' as orgId , '1' as instId, 'ORG 1' as orgName, 'OC1' as orgCode from dual union select '2', '2', 'ORG 2', 'OC2' from dual union select '3', '2', 'ORG 3', 'OC3' from dual)
select JSON_OBJECT('instName' VALUE i.instName, 'ORGS' value (select JSON_OBJECTAGG('org' VALUE JSON_OBJECT('orgName' VALUE orgName, 'orgCode' VALUE orgCode)) FROM ORGANISATION o where o.instId = i.instId )) 
from institution i ;

这将为每个机构给予一个JSON有效负载,下面是orgs ....没有深入到校园ect,但您可以扩展上面的内容....
机构1的有效载荷=

{"instName":"TEST 1","ORGS":{"org":{"orgName":"ORG 1","orgCode":"OC1"}}}

机构2的有效载荷=

{"instName":"TEST 2","ORGS":{"org":{"orgName":"ORG 2","orgCode":"OC2"},"org":{"orgName":"ORG 3","orgCode":"OC3"}}}

相关问题