在T-SQL查询中获取表格和json列

时间:2017-06-30 01:07:51

标签: sql-server json tsql sql-server-2016

在SQL Server 2016中,FOR JSON PATH允许将整个结果集作为JSON字符串返回。有没有办法获得一些常规记录集,其中一些列为JSON?

例如对于产品(主)和订单(详细信息)表连接在一起时,我希望查询将Products表中的结果集作为常规表格列返回,但是Orders表中的每个产品的多行来自{{ 1}}表作为JSON列返回。

到目前为止,我一直在使用用户定义的标量函数来执行此操作,产品ID已传递到该函数,并且它返回了JSON格式的Orders数据,但我希望是否有更简洁的方法。

1 个答案:

答案 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)