Я знаю, что здесь много похожих вопросов и ответов. Я прочитал большинство из них, но не могу запросить вложенные массивы в структуре JSON. Я заблудился в CROSS APPLY.
Я на самом деле запрашиваю веб-API, но ради своего вопроса я поместил его в переменную. Я пытаюсь вставить идентификатор (3519) и всю информацию о "worker_contracts" в таблицу.
declare @json nvarchar(max)
set @json = '
{
"data": [
{
"id": "3519",
"type": "affiliate_workers",
"attributes": {
"title": "mr",
"first_name": "John",
"last_name": "Doe",
"telephone": "+32 471 12 34 56",
"worker_contracts": [
{
"start_date": "2020-01-06",
"end_date": null,
"social_secretary_specific_data": {
"affiliate_id": 54,
"worker_details_id": 3378,
"start_date": "2020-01-06",
"end_date": null,
"affiliate_worker_id": 3519,
},
"work_hours_per_week": 25.0,
"comment": "",
"roster_week": [
{
"start_date": "2020-01-13",
"number_hours": 25
},
{
"start_date": "2020-01-06",
"number_hours": 25
}
],
"social_secretary_identifier": "123456"
},
{
"start_date": "2019-09-23",
"end_date": "2020-01-05",
"social_secretary_specific_data": {
"affiliate_id": 54,
"worker_details_id": 3378,
"start_date": "2019-09-23",
"end_date": "2020-01-05",
"affiliate_worker_id": 3519,
},
"work_hours_per_week": 21.0,
"comment": "",
"roster_week": [
{
"start_date": "2019-09-30",
"number_hours": 21
},
{
"start_date": "2019-09-23",
"number_hours": 21
}
],
"social_secretary_identifier": "123456"
}
],
"sodexo_reference": "56789",
"region": "Vlaanderen",
"identity_card_number": "A1122334455",
"can_work_with_animals": false
}
}
]
}
Мой SQL запрос только выбирает значения даты начала и окончания. Я не понимаю, как я могу добавить другие вложенные данные.
insert into AffiliateWorkersContract_WRK
select WA.id, wc.*
from OpenJson((CAST(@json as nvarchar(max))),'$.data')
WITH (
id int,
worker_contracts nvarchar(max) as json
)
as WA
cross apply openjson (WA.worker_contracts)
with
(
start_date date '$.start_date',
end_date date '$.end_date',
) as WC
Спасибо всем за вашу помощь заранее.