By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE testing(
id VARCHAR(100),
json nvarchar(max)
);
INSERT INTO testing values('123', '{"secondaries":[{"secondaryId":1,"primaries":[{"primary":1,"status":"UNKNOWN"},{"primary":2,"status":"UNKNOWN"}]}]}');
1 rows affected
UPDATE t
SET json = JSON_MODIFY(t.json, '$.secondaries', JSON_QUERY(j1.secondaries_new))
FROM testing t
CROSS APPLY (
SELECT '[' + STRING_AGG(JSON_MODIFY(secondaries.value, '$.primaries', JSON_QUERY(j2.primaries_new)), ',') + ']'
FROM OPENJSON(t.json, '$.secondaries') secondaries
CROSS APPLY (
SELECT '[' + STRING_AGG(JSON_MODIFY(primaries.value, '$.status', 'PASSED'), ',') + ']'
FROM OPENJSON(secondaries.value, '$.primaries') primaries
) j2(primaries_new)
) j1(secondaries_new);
1 rows affected
SELECT * FROM testing;
id | json |
---|---|
123 | {"secondaries":[{"secondaryId":1,"primaries":[{"primary":1,"status":"PASSED"},{"primary":2,"status":"PASSED"}]}]} |