我有以下数据:
CREATE TABLE mytable
(
ID int,
Product nvarchar(50),
Usage nvarchar(255),
);
INSERT INTO mytable VALUES (99346,'Universal light','Art and Culture');
INSERT INTO mytable VALUES (99346,'Universal light','Health and Care');
INSERT INTO mytable VALUES (99346,'Universal light','Hotel and Wellness');
INSERT INTO mytable VALUES (99346,'Universal light','Education and Science');
我创建了以下代码来获取我的 JSON 输出:
SELECT DISTINCT T1.ID
,T1.Product
,(SELECT T2.Usage
FROM mytable T2
WHERE T1.ID=T2.ID
FOR JSON PATH) as 'Usage'
FROM mytable T1
FOR JSON PATH
它输出以下结果:
[
{
"ID": 99346,
"Product": "Universal light",
"Usage": [
{
"Usage": "Art and Culture"
},
{
"Usage": "Health and Care"
},
{
"Usage": "Hotel and Wellness"
},
{
"Usage": "Education and Science"
}
]
}
]
我希望得到如下结果,但不知道如何更改语法:
[
{
"ID": 99346,
"Product": "Universal light",
"Usage": [ "Art and Culture" , "Health and Care" , "Hotel and Wellness" , "Education and Science"
]
}
]
对此非常感谢任何帮助。
编辑
如果我使用这个初始数据,在第 3 行的末尾我有一个额外的 ' ' 解决方案不起作用,没有错误或警告:
INSERT INTO mytable VALUES (99346,'Universal light','Art and Culture');
INSERT INTO mytable VALUES (99346,'Universal light','Education and Science');
INSERT INTO mytable VALUES (99346,'Universal light','Health and Care ');
INSERT INTO mytable VALUES (99346,'Universal light','Hotel and Wellness');
INSERT INTO mytable VALUES (99346,'Universal light','Offices and Communication');
INSERT INTO mytable VALUES (99346,'Universal light','Presentation and Retail');
我尝试使用 TRIM,如下所示:
SELECT Distinct ID
,Product
,json_query(QUOTENAME(STRING_AGG('"' + STRING_ESCAPE(TRIM(Usage), 'json') + '"', char(44)))) AS 'Usage'
FROM mytable
GROUP BY ID
,Product
FOR JSON PATH;
不幸的是,它不起作用,整个数组 'Usage' 以某种方式被忽略了,查看结果:
[
{
"ID": 99346,
"Product": "Universal light"
}
]