Вы можете попробовать следующий подход, используя OPENJSON
(с явной структурой для столбцов ACCOUNT
и USERS
) и дополнительные CROSS APPLY
:
-- JSON
DECLARE @JSON AS NVARCHAR(MAX);
SET @JSON = N'{
"ACCOUNT": 1
, "USERS" : {
"BOB" : 1
, "JOHN" : 2
, "RODGER" : 3
}
}';
-- Statement
SELECT i.ACCOUNT, v.[key] AS [USER], v.[value] AS USER_VALUE
FROM OPENJSON(@json)
WITH (
ACCOUNT int '$.ACCOUNT',
USERS nvarchar(max) '$.USERS' AS JSON
) i
CROSS APPLY (
SELECT *
FROM OPENJSON(i.USERS)
) v
Вывод:
ACCOUNT USER USER_VALUE
1 BOB 1
1 JOHN 2
1 RODGER 3