You need an OPENJSON()
call with the appropriate path
to access the nested $.source_info.help_info.details
JSON array and STRING_AGG()
to aggregate the names:
Sample data:
SELECT *
INTO Data
FROM (VALUES
(1, 45745, '{"source":"XYZ",
"source_info":{
"type":"need_help",
"help_info":{
"questions":50,
"details":[{"floatv":0.42,"name":"Tom"},{"floatv":1.08,"name":"Dick"},{"floatv":1.2,"name":"Harry"}]}}}')
) v (UID, ID, JSON)
Statement:
SELECT
ID,
NAMES = (
SELECT STRING_AGG(JSON_VALUE([value], '$.name'), ' ')
WITHIN GROUP (ORDER BY CONVERT(int, [key]))
FROM OPENJSON(JSON, '$.source_info.help_info.details')
)
FROM Data