列出SQL中一行中每个顺序的项



我有一个订单表。我想从表1中得到表2

Table1:

ItemId3

如果您正在使用SQL Server 2017或以上版本,有STRING_AGG函数将为您做这一点:

SELECT OrderId, '[' + STRING_AGG('{"ItemId":' + ItemId + "}, ',') + ']' AS ItemId FROM Table1;

但是,查看连接的值,看起来您正在尝试在SQL查询中构造JSON输出。如果是这种情况,您最好在应用层中这样做,或者使用FOR JSON结构,如这里所述。

在下面的代码中,我使用FOR JSONSELECT结果格式化为JSON。FOR JSON子句将查询结果格式化为JSON,而不是表。

代码如下:

SELECT 
T1.[OrderID],
(SELECT T2.ItemId FROM OrderTable T2 WHERE T1.OrderID=T2.OrderID FOR JSON PATH) AS Items
FROM OrderTable  AS T1
GROUP BY T1.[OrderID] 

最新更新