【问题标题】:Generate nested JSON for data [duplicate]为数据生成嵌套 JSON [重复]
【发布时间】:2019-09-23 10:50:40
【问题描述】:

我有下表和样本数据:

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"}]}
]

【问题讨论】:

    标签: sql json sql-server tsql sql-server-2017


    【解决方案1】:

    数据库设计可以使用一些规范化。话虽如此,您可以使用嵌套查询来创建嵌套 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
    

    Demo on db<>fiddle

    【讨论】:

    • 比你多!!!!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多