Я новичок в JSON, и разработчики сказали, что системы, в которых я использую SSRS / Query from, теперь будут содержать массивы JSON.
Я немного подобрал его через статьи MSDN /несколько здесь, но я хотел бы знать, есть ли более эффективный или более простой способ достичь того, что я пытаюсь.
Все, что я хочу сделать, это подсчитать, сколько раз "Несоблюдение" происходит внутримассив (это может быть 1 или более раз в зависимости от отправленной формы, поэтому никогда не фиксированная сумма)
Вот то, с чем я работаю;
DECLARE @json NVARCHAR(4000) = N'{
"FormId": "3eb068fe-77c3-4f95-99fc-8313c00ce768",
"FormName": "Test Form",
"FormVersion": 1.0,
"Sections": [
{
"Id": "36e612c9-9113-48a7-9415-c9b7200e7376",
"Name": "General Details Section",
"Title": "General",
"Fields": [
{
"Id": "a4cedad6-483b-4b42-b42e-12f048b5474e",
"Label": "Was the Job Done Safely?",
"ValueDataType": "System.String",
"Value": "No",
"SubFields": [
{
"Id": "36593287-bbc4-42cd-914a-eef93a85c6d7",
"Label": "What has been done to resolve this?",
"ValueDataType": "System.String",
"Value": "TEST"
},
{
"Id": "49164866-3afe-4842-aa6f-85312fd3d558",
"Label": "When was this Resolved?",
"ValueDataType": "System.DateTime",
"Value": "2018-05-04T00:00:00+01:00"
}
]
}
]
},
{
"Id": "7b2e4eb9-6f2c-422b-a9fd-c813df293aa5",
"Name": "Works Review",
"Title": "Works Review",
"Fields": [
{
"Id": "04a0c54b-7de5-4a14-8ee5-75dade12bfe4",
"Label": "Is the Reinstatement correct?",
"ValueDataType": "System.String",
"Value": "Non Compliant",
"SubFields": [
{
"Id": "36593287-bbc4-42cd-914a-eef93a85c6d7",
"Label": "What has been done to resolve this?",
"ValueDataType": "System.String",
"Value": "TEST"
},
{
"Id": "49164866-3afe-4842-aa6f-85312fd3d558",
"Label": "When was this Resolved?",
"ValueDataType": "System.DateTime",
"Value": "2018-05-04T00:00:00+01:00"
}
]
},
{
"Id": "93b4e405-921c-48b3-9dc4-8a1363fb09c9",
"Label": "Is the SLG correct on site?",
"ValueDataType": "System.String",
"Value": "Non Compliant",
"SubFields": [
{
"Id": "a7847ef3-c413-4a3e-8b6c-2fef4085f77c",
"Label": "What has been done to resolve this?",
"ValueDataType": "System.String",
"Value": "TEST"
},
{
"Id": "18af548a-3ac5-46e6-ac27-a68232d5670a",
"Label": "When was this Resolved?",
"ValueDataType": "System.DateTime",
"Value": "2018-05-04T00:00:00+01:00"
},
{
"Id": "9107d373-4207-4e58-9a85-22e466a2c4c7",
"Label": "How many Barriers are on site?",
"ValueDataType": "System.Decimal",
"Value": 4.0
}
]
}
]
}
]
}';
SELECT *
FROM OPENJSON(@json,'$.Sections[1].Fields[0]') a
CROSS APPLY OPENJSON(@json, '$.Sections') b
Как вы можете видеть, я 'я учусь шагать в данные, но есть ли лучший способ проверить сразу несколько «Разделов» и «Полей», чтобы получить данные, которые я ищу?
Спасибо за ваше время.