【发布时间】:2020-09-09 10:28:17
【问题描述】:
我在 SQLS 服务器中有一个存储过程,它以以下 JSON 格式提供输出:
[
{
"accountid":"12312312",
"Id":1,
"name":"Ace Signs Ltd"
},
{
"accountid":"213123123",
"Id":2,
"name":"Workshare Technology"
},
{
"accountid":"12312312",
"Id":1,
"name":"Ace Signs Ltd"
},
{
"accountid":"123123123",
"Id":2,
"name":"Workshare"
}
]
但我希望它们根据 ID 分组到嵌套数组中,如下所示。其中ID相同的是一个元组。
{
"match":[
[
{
"accountid":"12312312",
"Id":1,
"name":"Ace Signs Ltd"
},
{
"accountid":"12312312",
"Id":1,
"name":"Ace Signs Ltd"
}
],
[
{
"accountid":"12312312",
"Id":2,
"name":"Workshare Technology"
},
{
"accountid":"213123123",
"Id":2,
"name":"Workshare"
}
]
]
}
生成JSON的部分存储过程如下:
SELECT *
FROM TestJsonFormat
FOR JSON AUTO
样本数据:
CREATE TABLE TestJsonFormat (
accountid varchar(255),
Id int,
name varchar(255)
)
insert into TestJsonFormat values(12312312,1,'Ace Signs Ltd')
insert into TestJsonFormat values(213123123,2,'Workshare Technology')
insert into TestJsonFormat values(12312312,1,'Ace Signs Ltd')
insert into TestJsonFormat values(123123123,2,'Workshare')
【问题讨论】:
-
JSON 没有元组,只有数组和对象。您发布的是带有对象的嵌套数组
-
@PanagiotisKanavos 将编辑问题
-
你能发布测试数据吗?谢谢。
-
@Zhorov 我现在已经添加了示例数据
-
@Sindu_ 太棒了。您的 SQL Server 版本是多少?一种可能的方法是基于
FOR JSON AUTO和基本字符串聚合。另请注意,您的预期输出不是有效的 JSON。
标签: sql arrays json sql-server select