我有一个订单表。我想从表1中得到表2
Table1:
ItemId3
如果您正在使用SQL Server 2017或以上版本,有STRING_AGG
函数将为您做这一点:
SELECT OrderId, '[' + STRING_AGG('{"ItemId":' + ItemId + "}, ',') + ']' AS ItemId FROM Table1;
但是,查看连接的值,看起来您正在尝试在SQL查询中构造JSON输出。如果是这种情况,您最好在应用层中这样做,或者使用FOR JSON
结构,如这里所述。
在下面的代码中,我使用FOR JSON
将SELECT
结果格式化为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]