我有一个来自 API 的 JSON 响应,如下所示:
{
"series":[
{
"series_id": "SER_ID_1",
"data": [
["20200101",
1.0
],
["20200102",
1.9
],
["20200103",
4.5
]
]
},
{
"series_id": "SER_ID_2",
"data": [
["20200101",
6.0
],
["20200102",
8.9
],
["20200103",
1.5
]
]
}
]
}
中可以存在N series
并且可以存在N
值data
。
我想用 SQL 解析这个 JSON,以便得到以下结果:
series_id date value
SER_ID_1 20200101. 1.0
SER_ID_1 20200102. 1.9
SER_ID_1 20200103. 4.5
SER_ID_2 20200101. 6.0
SER_ID_2 20200102. 8.9
SER_ID_2 20200103. 1.5
请提供 SQL 服务器查询以在解析 JSON 时获得所需的结果。
提前致谢。
您需要使用OPENJSON()
适当的显式模式两次解析输入 JSON 。当然,您需要 SQL Server 2016+ 才能使用内置的 JSON 支持。
JSON:
DECLARE @json nvarchar(max) = N'
{
"series":[
{
"series_id": "SER_ID_1",
"data": [["20200101", 1.0], ["20200102", 1.9], ["20200103", 4.5]]
},
{
"series_id": "SER_ID_2",
"data": [["20200101", 6.0], ["20200102", 8.9], ["20200103", 1.5]]
}
]
}'
陈述:
SELECT j1.series_id, j2.[date], j2.[value]
FROM OPENJSON(@json, '$.series') WITH (
series_id varchar(10) '$.series_id',
data nvarchar(max) '$.data' AS JSON
) j1
OUTER APPLY OPENJSON(j1.data) WITH (
[date] date '$[0]',
[value] numeric(5, 1) '$[1]'
) j2
结果:
series_id date value
SER_ID_1 2020-01-01 1.0
SER_ID_1 2020-01-02 1.9
SER_ID_1 2020-01-03 4.5
SER_ID_2 2020-01-01 6.0
SER_ID_2 2020-01-02 8.9
SER_ID_2 2020-01-03 1.5
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句