SELECT all fields from OPENJSON
I have Json data below. How can I select all available fields from OpenJson? I am using SQL Server 2016.
DECLARE @JsonData varchar(max)
SET @JsonData =
'{"status":"OK","code":200,"trace_id":"fdfdsgdgfsgdfs","timestamp":"2023-09-12T17:24:20Z","messages": [],"result": {
"response_metadata" : {
"total_number_of_instruments" : 2,
"total_number_of_unresolved_identifiers" : 0,
"total_number_of_batches" : 1,
"current_batch" : 1,
"data_request_id" : "0-gfsgsd17:24:20+0000",
"data_request_id_expiration_time" : "2023-09-13T17:24:20+0000",
"resolvedfactors" : [ "ESG_RATING", "ISSUER_NAME", "ISSUER_ISIN", "ISSUER_TICKER", "ISSUERID" ]
},
"data" : [ {
"requested_id" : "IID000000003053597",
"issuer_metadata" : [ {
"ISSUERID" : "IID000000003053597",
"ISSUER_NAME" : "Crowdstrike Holdings Inc",
"ISSUER_ISIN" : "US22788C1053",
"as_of_date" : "2019-09-01",
"valid_until_date" : "2019-12-01"
} ],
"factors" : [ {
"name" : "ISSUER_NAME",
"data_values" : [ {
"value" : "Crowdstrike Holdings Inc",
"as_of_date" : "2019-09-30",
"as_at_date" : "2023-09-12T17:24:20.921118Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "Crowdstrike Holdings Inc",
"as_of_date" : "2019-10-31",
"as_at_date" : "2023-09-12T17:24:20.921118Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "Crowdstrike Holdings Inc",
"as_of_date" : "2019-11-29",
"as_at_date" : "2023-09-12T17:24:20.921118Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
} ]
}, {
"name" : "ISSUER_ISIN",
"data_values" : [ {
"value" : "US22788C1053",
"as_of_date" : "2019-09-30",
"as_at_date" : "2023-09-12T17:24:20.921091Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "US22788C1053",
"as_of_date" : "2019-10-31",
"as_at_date" : "2023-09-12T17:24:20.921091Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "US22788C1053",
"as_of_date" : "2019-11-29",
"as_at_date" : "2023-09-12T17:24:20.921091Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
} ]
}, {
"name" : "ISSUERID",
"data_values" : [ {
"value" : "IID000000003053597",
"as_of_date" : "2019-09-30",
"as_at_date" : "2023-09-12T17:24:00Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "IID000000003053597",
"as_of_date" : "2019-10-31",
"as_at_date" : "2023-09-12T17:24:00Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "IID000000003053597",
"as_of_date" : "2019-11-29",
"as_at_date" : "2023-09-12T17:24:00Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
} ]
} ]
}, {
"requested_id" : "IID000000002633749",
"issuer_metadata" : [ {
"ISSUERID" : "IID000000002633749",
"ISSUER_NAME" : "CRESTWOOD MIDSTREAM PARTNERS LP",
"ISSUER_ISIN" : "US226373AL21",
"ISSUER_TICKER" : "CEQP",
"as_of_date" : "2019-09-01",
"valid_until_date" : "2019-12-01"
} ],
"factors" : [ {
"name" : "ESG_RATING",
"data_values" : [ {
"value" : "B",
"as_of_date" : "2019-09-30",
"as_at_date" : "2023-09-12T17:24:20.925397Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "B",
"as_of_date" : "2019-10-31",
"as_at_date" : "2023-09-12T17:24:20.925397Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "B",
"as_of_date" : "2019-11-29",
"as_at_date" : "2023-09-12T17:24:20.925397Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
} ]
}, {
"name" : "ISSUER_NAME",
"data_values" : [ {
"value" : "CRESTWOOD MIDSTREAM PARTNERS LP",
"as_of_date" : "2019-09-30",
"as_at_date" : "2023-09-12T17:24:20.925444Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "CRESTWOOD MIDSTREAM PARTNERS LP",
"as_of_date" : "2019-10-31",
"as_at_date" : "2023-09-12T17:24:20.925444Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "CRESTWOOD MIDSTREAM PARTNERS LP",
"as_of_date" : "2019-11-29",
"as_at_date" : "2023-09-12T17:24:20.925444Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
} ]
}, {
"name" : "ISSUER_ISIN",
"data_values" : [ {
"value" : "US226373AL21",
"as_of_date" : "2019-09-30",
"as_at_date" : "2023-09-12T17:24:20.925421Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "US226373AL21",
"as_of_date" : "2019-10-31",
"as_at_date" : "2023-09-12T17:24:20.925421Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "US226373AL21",
"as_of_date" : "2019-11-29",
"as_at_date" : "2023-09-12T17:24:20.925421Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
} ]
}, {
"name" : "ISSUER_TICKER",
"data_values" : [ {
"value" : "CEQP",
"as_of_date" : "2019-09-30",
"as_at_date" : "2023-09-12T17:24:20.925464Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "CEQP",
"as_of_date" : "2019-10-31",
"as_at_date" : "2023-09-12T17:24:20.925464Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "CEQP",
"as_of_date" : "2019-11-29",
"as_at_date" : "2023-09-12T17:24:20.925464Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
} ]
}, {
"name" : "ISSUERID",
"data_values" : [ {
"value" : "IID000000002633749",
"as_of_date" : "2019-09-30",
"as_at_date" : "2023-09-12T17:24:00Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "IID000000002633749",
"as_of_date" : "2019-10-31",
"as_at_date" : "2023-09-12T17:24:00Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
}, {
"value" : "IID000000002633749",
"as_of_date" : "2019-11-29",
"as_at_date" : "2023-09-12T17:24:00Z",
"reference_issuer_id" : null,
"reference_issuer_name" : null
} ]
} ]
} ]
}}'
I tried the following query, but I am not getting any values. Is there a way to select all the available data? TIA
SELECT
MAX(CASE WHEN json_value(x.value, '$.name') = 'ISSUERID'
THEN json_value(y.value, '$.value') END) AS ISSUERID,
MAX(CASE WHEN json_value(x.value, '$.name') = 'as_of_date'
THEN json_value(y.value, '$.as_of_date') END) AS as_of_date,
MAX(CASE WHEN json_value(x.value, '$.name') = 'valid_until_date'
THEN json_value(y.value, '$.as_at_date') END) AS valid_until_date
FROM
OPENJSON(@JsonData, '$.result.data.factors') x
CROSS APPLY
OPENJSON(x.value,'$.data_values') y
--cross apply openjson(x.as_of_date,'$.data_values') z
GROUP BY
y.[key]
Here is the result
ISSUERID | as_of_date | valid_until_date |
---|