Stack Overflow на русском Asked on December 14, 2021
Есть таблица с колонками CustomerID и Info.
Пример содержимого Info по пользователю 17:
[{"Key":"ErrorCode","Value":"16734}, {"Key":"DocumentNationality","Value":null},
{"Key":"DocumentAddress","Value":null} ]
Мне нужно создать таблицу с колонками CustomerID и ErrorCode. То есть в итоге по этому пользователю будет строка:
CustomerID ErrorCode
17 16734
Подскажите, как это можно сделать?
Была лишняя двойная кавычка рядом с 16734. Я должен был удалить ее, чтобы сделать JSON правильным.
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (CustomerID INT PRIMARY KEY, Info NVARCHAR(MAX));
INSERT INTO @tbl (CustomerID, Info) VALUES
(17, N'[{"Key":"ErrorCode","Value":16734}, {"Key":"DocumentNationality","Value":null}, {"Key":"DocumentAddress","Value":null} ]');
-- DDL and sample data population, end
;WITH rs AS
(
SELECT t.CustomerID, [Key], [Value] AS ErrorCode
FROM @tbl AS t
CROSS APPLY OPENJSON(t.Info)
WITH (
Value VARCHAR(200) '$.Value',
[Key] VARCHAR(200) '$.Key'
)
)
SELECT CustomerID, ErrorCode
FROM rs
WHERE [Key] = 'ErrorCode';
результат
+------------+-----------+
| CustomerID | ErrorCode |
+------------+-----------+
| 17 | 16734 |
+------------+-----------+
Answered by Yitzhak Khabinsky on December 14, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP