【发布时间】:2021-08-03 16:39:28
【问题描述】:
从返回以下格式数据的 API 解析 SQL Server 数据库中的数据:
declare @json nvarchar(4000) = N'{
"List":{
"header":{
"id":"id1",
"resolution":"Hourly"
},
"values":[
[
{
"dateTime":"2020-10-01T00:00:00",
"unit":"MWh",
"val":0.9
},
{
"dateTime":"2020-10-01T01:00:00",
"unit":"MWh",
"val":1.1
}
],
[
{
"dateTime":"2020-10-02T00:00:00",
"unit":"MWh",
"val":0.5
},
{
"dateTime":"2020-10-02T01:00:00",
"unit":"MWh",
"val":0.3
}
]
]
}
}'
问题在于键值内部是 json 中的列表列表。我想要以下格式的数据:
| id | dateTime | unit | val |
|---|---|---|---|
| id1 | 2020-10-01T00:00:00 | MWh | 0.9 |
| id1 | 2020-10-01T01:00:00 | MWh | 1.1 |
| id1 | 2020-10-02T00:00:00 | MWh | 0.5 |
| id1 | 2020-10-02T01:00:00 | MWh | 0.3 |
我已经用这段代码测试过:
SELECT
(SELECT *
FROM OPENJSON (@json, '$.List.header')
WITH (entityid varchar(200) '$.id')) id,
*
FROM
OPENJSON (@json, '$.List.values')
WITH (datetime datetime '$.dateTime',
unit varchar(10) '$.unit',
val float '$.val')
但我明白了
| id | dateTime | unit | val |
|---|---|---|---|
| id1 | null | null | null |
| id1 | null | null | null |
| id1 | null | null | null |
| id1 | null | null | null |
【问题讨论】:
标签: arrays json sql-server list open-json