繁体   English   中英

来自 SQL Server 2016 的嵌套 JSON

[英]Nested JSON from SQL Server 2016

我有如下表所示的数据

1
1

我正在尝试在 SQL Server 2016 中使用FOR JSON PATH生成一个 JSON 并获取如下所示的 JSON:

[
   {
      "X":1,
      "VAL":{
         "Y":"A"
      }
   },
   {
      "X":1,
      "VAL":{
         "Y":"B"
      }
   }
]

但我期待一些看起来像组合的东西,如下所示。

[
   {
      "X":1,
      "VAL":{
         "Y":"A",
         "Y":"B"
      }
   }
]

有人可以帮助我如何在 SQL Server 2016 中实现这一目标吗? 到目前为止,我已经尝试通过连接获得一个嵌套的 JSON。

;WITH CTE (X,Y) AS 
(
    SELECT 1 , 'A'
    UNION ALL
    SELECT 1 , 'B'
)
SELECT   
    A.X, B.Y AS 'VAL.Y' 
FROM 
    CTE A 
INNER JOIN 
    CTE B ON A.X = B.X AND A.Y = B.Y 
FOR JSON PATH

尝试这样的事情:

declare @t table (X int, Y varchar(1));

insert into @t(x,y)
values (1,'A'), (1,'B');

with l1 as (select distinct x from @t)
select l1.X, VAL.Y
from l1 join @t as VAL on l1.x = VAL.x
for json auto, without_array_wrapper

CTE 将从第一列中列出不同的值,然后通过此列将其与主表连接。 FOR JSON AUTO 将嵌套结果并为您提供所需的结构。 结果是:

{
   "X":1,
   "VAL":[
      {
         "Y":"A"
      },
      {
         "Y":"B"
      }
   ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM