在將 JSON 列轉換為 SQL Server 表時需要幫助。
我有一個nvarchar(max)存盤 JSON 格式值的 SQL Server 列,如下所示。
我想將資料轉換為表格格式以生成一些報告。
請檢查樣本資料以及預期結果。
CREATE TABLE ##TempTable
(
rawdata nvarchar(max)
)
INSERT INTO ##TempTable (rawdata)
VALUES (
'[
[
{"key":"ID","value":"123"},
{"key":"Name","value":"abc"},
{"key":"Program","value":"qew"},
{"key":"Type","value":"tyu"},
{"key":"Section","value":"dd"},
{"key":"Director","value":"ghghjg"},
{"key":"Project","value":"hkhjk"},
{"key":"Manager","value":"fghfgf"},
{"key":"PCM","value":"gnhghj"},
{"key":"Contractor","value":"gghgh"},
{"key":"Client","value":"gghhg"}
],
[
{"key":"ID","value":"456"},
{"key":"Name","value":"yui"},
{"key":"Program","value":"gdffgf"},
{"key":"Type","value":"ghgfjhjhj"},
{"key":"Section","value":"jkjlkll"},
{"key":"Director","value":"uiop"},
{"key":"Project","value":"rtyuui"},
{"key":"Manager","value":"rfv"},
{"key":"PCM","value":"ujmk"},
{"key":"Contractor","value":"rfvtg"},
{"key":"Client","value":"efgg"}
]
]'
)
預期結果:
| ID | 名稱 | 程式 | 型別 | 部分 | 導演 | 專案 | 經理 | PCM | 承包商 | 客戶 |
|---|---|---|---|---|---|---|---|---|---|---|
| 123 | 美國廣播公司 | qw | 秋 | dd | 好久不見 | hkhjk | fghfgf | 關注 | 呸呸呸 | 呸呸呸 |
| 456 | 結衣 | gdfgf | 生長激素 | jkjlkll | uiop | 呸呸呸 | 射頻識別 | ujmk | rfvtg | 蛋黃醬 |
提前致謝。
任何幫助將非常感激。
uj5u.com熱心網友回復:
您有雙重嵌套的 JSON 陣列。
第一級包含整個鍵/值對陣列,代表最終結果中的單行。我們可以用OPENJSON這個陣列來打斷,并APPLY把它恢復到原來的表中。
第二級具有包含列名和值的鍵/值對。我們需要在另一個APPLY.
SELECT j2.*
FROM TempTable t
CROSS APPLY OPENJSON(t.rawdata) j1
CROSS APPLY (
SELECT *
FROM OPENJSON(j1.value)
WITH (
[key] varchar(50),
value varchar(100)
) j2
PIVOT (
MAX(value) FOR [key] IN (
ID,Name,Program,[Type],Section,Director,Project,Manager,PCM,Contractor,Client
)
) pvt
) j2
SQL小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/415073.html
標籤:
