开发者社区 问答 正文

与JSON数组交叉应用

我以以下格式存储表格中的数据-HMEEM.png

展开
收起
祖安文状元 2020-01-05 14:00:06 337 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 您需要另外两个APPLY带有两个不同OPENJSON()调用的运算符。首次调用的是默认架构,结果是带有key,value和列的表type。第二个调用是使用带有适当列的显式架构,该列使用以下WITH子句定义:

    表:

    表:

    CREATE TABLE Data (
       CustomerID int,
       City nvarchar(50),
       Product nvarchar(max)
    )
    INSERT INTO Data
       (CustomerID, City, Product)
    VALUES
       (1, N'Delhi', N'[{"Products": [{"Id": "1", "Name": "TV"}, {"Id": "2", "Name": "Laptop"}]}]'),
       (2, N'Bamgalore', N'[{"Products": [{"Id": "1", "Name": "TV"}, {"Id": "2", "Name": "Laptop"}, {"Id": "3", "Name": "Mobile"}]}]')
    
    

    声明:

    SELECT d.CustomerID, j2.Id, j2.Name
    FROM Data d
    CROSS APPLY OPENJSON(d.Product, '$') j1
    CROSS APPLY OPENJSON(j1.[value], '$.Products') WITH (
       Id nvarchar(10) '$.Id',
       Name nvarchar(50) '$.Name'
    ) j2
    
    

    结果:

    ----------------------
    CustomerID  Id  Name
    ----------------------
    1           1   TV
    1           2   Laptop
    2           1   TV
    2           2   Laptop
    2           3   Mobile
    
    2020-01-05 14:00:29 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答标签:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等