Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить json вида? / 2 сообщений из 2, страница 1 из 1
29.09.2018, 14:09
    #39710291
minya13_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить json вида?
Код: sql
1.
Microsoft SQL Server 2017 (RTM-CU8) (KB4338363) - 14.0.3029.16 (X64)   Jun 13 2018 13:35:56   Copyright (C) 2017 Microsoft Corporation  Developer Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor) 



Есть таблица вида:
Код: sql
1.
2.
3.
4.
5.
6.
7.
DECLARE @T TABLE ([Name] VARCHAR(50),born date,passport VARCHAR(50),validUntil DATE,flight VARCHAR(50),datef DATE,class VARCHAR(5),id INT,escort int)
INSERT INTO @T 
SELECT 'Ivanov Maksim','1990-08-13','77123456','2025-08-13','S7 1313','2018-10-03','Э',1,'' 
UNION ALL 
SELECT 'Ivanov Sergey','2018-01-22','77123457','2025-01-13','S7 1313','2018-10-03','Э',2,1

SELECT * FROM @T



Нужно получить JSON вида

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
{"flights":[{
"date": "2018-10-03",
"flight": "S7 1313", 
"allotment": { 
				"code": "Э"
			  }
}],
"tourists":[{
"id": 1,
"name": "Ivanov Maksim",
"born": "1990-08-13",
"document": { 
			"number": "77123456",
			 "validUntil": "2025-08-13"
			 }
},
{"id": 2,
"name": "Ivanov Sergey",
"born": "2018-01-22",
"document": { 
			"number": "77123457",
			 "validUntil": "2025-01-13"
			 },
"escortedBy": 1 
}]
}



Написал запрос вида:
Код: sql
1.
2.
3.
4.
SELECT distinct datef AS [date],flight AS [flight]
,class AS [allotment.code]
FROM @T AS t 
FOR JSON PATH,ROOT('flight')



А как вложенности использовать тут?
...
Рейтинг: 0 / 0
29.09.2018, 16:44
    #39710323
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить json вида?
minya13_85,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
with flights as (
   select 
          [datef] as [date],
          [flight] as [flight],
          [class] as [allotment.code]
   from @t
   group by [flight], [class], [datef]
),
tourists as (
   select
         [id] as [id],
         [name]  as [name],
         [born] as [born],
         [passport] as [document.number],
         [validuntil] as [document.validUntil],
         [flight],
         [class],
         [datef]
    from @t
)
select * from flights f cross apply (select t.[id], t.[name], t.[born], t.[document.number], t.[document.validUntil] from tourists t where t.[flight] = f.[flight] and t.[class] = f.[allotment.code] and t.[datef] = f.[date] for json path) x(tourists)
for json path, root('flights')
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить json вида? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]