Обратите внимание, что вы не можете получить с прямым запросом, вам нужно сначала PIVOT
на storeid
.
Вы можете попробовать как следующий запрос.
select sid, bid, time,que, hrs,dat
from #store_data src
pivot
(
MAX([value])
for [key] in (sid, bid, time,que, hrs,dat)
) piv
for json auto
Полный пример
if object_id('tempdb.dbo.#store_data') is not null
drop table #store_data
create table #store_data ([key] nvarchar(max),[value] nvarchar(max),storeid varchar(100))
INSERT INTO #store_data VALUES ('sid','1','1')
INSERT INTO #store_data VALUES ('bid','3','1');
INSERT INTO #store_data VALUES ('time','2019-01-01','1');
INSERT INTO #store_data VALUES ('que','apple','1');
INSERT INTO #store_data VALUES ('sid','2','2');
INSERT INTO #store_data VALUES ('bid','5','2');
INSERT INTO #store_data VALUES ('hrs','6','2');
INSERT INTO #store_data VALUES ('dat','pine','2');
select sid, bid, time,que, hrs,dat
from #store_data src
pivot
(
MAX([value])
for [key] in (sid, bid, time,que, hrs,dat)
) piv
for json auto
Вывод:
[
{
"sid": "1",
"bid": "3",
"time": "2019-01-01",
"que": "apple"
},
{
"sid": "2",
"bid": "5",
"hrs": "6",
"dat": "pine"
}
]
Онлайн-демонстрация:
Здесь
Редактировать:
PIVOT
автоматически заказывает stroeid
ASC
без указания какого-либо заказа.Если вы хотите изменить его на другой порядок, скажем, DESC stroeid
, в этом случае вы можете изменить запрос следующим образом.
select sid, bid, time,que, hrs,dat
from #store_data src
pivot
(
MAX([value])
for [key] in (sid, bid, time,que, hrs,dat)
) piv
order by storeid desc
for json auto