Reputation: 55
I have a table in the following format -
orderNumber | orderName
-------------+------------
1 | Pizza
1 | Pasta
Using SQL query, I am expecting output in the following format -
{
"data": [{
"orderNumber":1,
"orders": [
{"orderName": "Pizza"},
{"orderName": "Pasta"}
]
}]
}
But my actual output is in the following format -
{
"data": [
{
"orderNumber": 1,
"orders" [
{"orderName": "Pizza"}
]
},
{
"orderNumber": 1,
"orders": [
{"orderName": "Pasta"}
]
}
]
}
SQL query which I am using is -
SELECT
(SELECT orderNumber as orderNumber,
(SELECT orderName
FROM sample_table b
WHERE a.orderNumber = b.orderNumber
FOR JSON PATH) AS orders
FROM sample_table a FOR JSON PATH, ROOT('data')
) AS orderdata
Can anyone help me out?
Upvotes: 1
Views: 305
Reputation: 1
--You Can use distinct query to do so.
create table #temp
(orderNumber varchar(20),
orderName varchar(20))
insert into #temp
values('1','Pizza'),
('1','Pasta'),
('2','KFC'),('2','MACD')
select distinct(orderNumber),
(select orderName
from #temp b
where a.orderNumber = b.orderNumber
for json path) as orders
from #temp a
for json path, root ('data')
Upvotes: 0
Reputation: 22811
You want a grouping query
select
orderNumber,
(select orderName
from sample_table b
where a.orderNumber = b.orderNumber
for json path) as orders
from sample_table a
group by orderNumber
for json path, root ('data')
returns
{
"data": [
{
"orderNumber": 1,
"orders": [
{
"orderName": "Pizza"
},
{
"orderName": "Pasta"
}
]
}
]
}
Upvotes: 1