【发布时间】:2021-11-01 00:03:12
【问题描述】:
我正在尝试在 SQL Server 中查询嵌套在数组中的 JSON 文件。下面是 JSON 的 sn-p:
[
{
"data_json": [
{
"site": "Test Western Cape DC",
"year": 2021,
"month": "2019-01-01 - 2019-01-31",
"total_kWh": {
"grid_electricity": 845106.2790000001,
"pv_electricity": 234122.22499999998
}
}
]
},
{
"data_json": [
{
"site": "Test Western Cape DC",
"year": 2021,
"month": "2019-02-01 - 2019-02-28",
"total_kWh": {
"grid_electricity": 796965.3940000001,
"pv_electricity": 169540.028
}
}
]
}
]
我想获得两行的最终结果,其中包含 Site、Month、Grid Electricity 和 PV Electricity 的列。
如果我删除方括号,我能够获得所需的列输出,但我想保留文件原样,我的结果也只包括第一行:
DECLARE @WP_ACCOUNT VARCHAR(MAX)
SELECT @WP_ACCOUNT =
BulkColumn
FROM OPENROWSET(BULK'C:\Users\taariq\Desktop\JSON\19-276.json', SINGLE_BLOB) JSON
SELECT j2.SITEDESC, j2.MONTHID, h1.ELECGRID, h1.ELECPV
FROM OPENJSON(@WP_ACCOUNT, '$.data_json') j1
OUTER APPLY OPENJSON(j1.[value]) WITH (
SITEDESC nvarchar(50) '$.site',
MONTHID nvarchar(50) '$.month',
total_kWh nvarchar(max) '$.total_kWh' AS JSON
) j2
CROSS APPLY OPENJSON(j2.total_kWh) WITH (
ELECGRID nvarchar(50) '$.grid_electricity',
ELECPV nvarchar(50) '$.pv_electricity'
) h1
【问题讨论】:
标签: sql arrays json sql-server