在將JSON列轉換為SQL Server表時需要幫助。
我有一個SQL Server nvarchar(max)列,它存盤了JSON格式的值,如下所示。
我想把資料轉換成表格格式,以產生一些報告。
請查看樣本。
請檢查示例資料和預期結果。
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"},
{"鍵": "主任", "值": "ghghjg"},
{"key":"Project","value":"hkhjk"},
{"鍵": "經理", "值": "fghfgf"},
{"key":"PCM","value":"gnhghj"},
{"鍵": "承包商", "值": "ghgh"},
{"key":"Client","value":"gghhg"}
],
[
{"key":"ID","value":"456"},
{"key":"Name","value":"yui"},
{"鍵": "程式", "值": "gdffgf"},
{"鍵": "型別", "值": "ghgfjhj"},
{"key": "Section", "value": "jkjlkll"},
{"key":"Director","value":"uiop"},
{"鍵": "專案", "值": "rtyuui"},
{"key":"Manager","value":"rfv"},
{"key":"PCM","value":"ujmk"},
{"鍵": "承包商", "值": "rfvtg"},
{"key":"Client","value":"efgg"}
]
]'
)
預期結果:
| ID | 姓名 | 程式型別 | 科室 | 主任專案 | 經理 | PCM承包商 | 客戶|
|---|---|---|---|---|---|---|---|
| 123 | abc | QEWddgnhghj | gghgh | gghgh | 456 | gdffgf | ghgf | jkjlkllrtyuui
提前感謝。
如果有任何幫助,我們將非常感激。
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,名稱,計劃,[型別],科室,主任,專案,經理,PCM,承包商,客戶
)
) pvt
) j2
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/314533.html
標籤:
