在SQL Server 2016中,FOR JSON PATH
允许将整个结果集作为JSON字符串返回。有没有办法获得一些常规记录集,其中一些列为JSON?
例如对于产品(主)和订单(详细信息)表连接在一起时,我希望查询将Products
表中的结果集作为常规表格列返回,但是Orders
表中的每个产品的多行来自{{ 1}}表作为JSON列返回。
到目前为止,我一直在使用用户定义的标量函数来执行此操作,产品ID已传递到该函数,并且它返回了JSON格式的Orders数据,但我希望是否有更简洁的方法。
答案 0 :(得分:2)
是。类似的东西:
select SalesOrderId, OrderDate, TotalDue, d.Details
from SalesLT.SalesOrderHeader h
cross apply
(
select *
from SalesLT.SalesOrderDetail d
where d.SalesOrderId = h.SalesOrderId
for json path
) d(details)