Sql 为数据生成嵌套JSON
我有下表和样本数据:Sql 为数据生成嵌套JSON,sql,json,sql-server,tsql,sql-server-2017,Sql,Json,Sql Server,Tsql,Sql Server 2017,我有下表和样本数据: CatID int Catname nvarchar(255) product_ID int product_name nvarchar(255) catid Catname product_ID product_name ----- ------------ ---------- ------------ 100 mycatname100 1 productname1 100 mycatname100 2
CatID int
Catname nvarchar(255)
product_ID int
product_name nvarchar(255)
catid Catname product_ID product_name
----- ------------ ---------- ------------
100 mycatname100 1 productname1
100 mycatname100 2 productname2
100 mycatname100 3 productname3
200 mycatname200 1 productname1
200 mycatname200 2 productname2
200 mycatname200 3 productname3
300 mycatname300 1 productname1
300 mycatname300 2 productname2
300 mycatname300 3 productname3
如何获得如下所示的JSON格式:
[
{"catid":"100","catname":"mycatname100","products":[{"product_id":"1","product_name":"productName1"},{"product_id":"2","product_name":"productName2"},{"product_id":"3","product_name":"productName3"}]},
{"catid":"200","catname":"mycatname200","products":[{"product_id":"1","product_name":"productName1"},{"product_id":"2","product_name":"productName2"},{"product_id":"3","product_name":"productName3"}]},
{"catid":"300","catname":"mycatname300","products":[{"product_id":"1","product_name":"productName1"},{"product_id":"2","product_name":"productName2"},{"product_id":"3","product_name":"productName3"}]}
]
数据库设计可能需要一些规范化。话虽如此,您可以使用嵌套查询创建嵌套JSON:
SELECT catid, catname, products = (
SELECT product_id, product_name
FROM t AS x
WHERE x.catid = t.catid
FOR JSON PATH
)
FROM t
GROUP BY catid, catname
FOR JSON AUTO
数据库设计可能需要一些规范化。话虽如此,您可以使用嵌套查询创建嵌套JSON:
SELECT catid, catname, products = (
SELECT product_id, product_name
FROM t AS x
WHERE x.catid = t.catid
FOR JSON PATH
)
FROM t
GROUP BY catid, catname
FOR JSON AUTO
比你多!!!!!比你好多了!!!!!