如何在单个查询中将表格结果和行的json表示形式合并为列?

时间:2019-03-15 14:07:11

标签: json sql-server tsql

用于在t-sql中查询json并返回整个结果集为json的sql server json功能非常棒,但我正在寻找一种“混合模式”方法,我想为此结果指定一组列设置,但还希望将整个行都转换为json对象/列。

类似这样的东西:

select ProductId, Name, Category, ProductJson = (* for json auto) 
from Product

我该怎么做?

1 个答案:

答案 0 :(得分:1)

一种方法是相关子查询:

SELECT ProductId, Name, Category,
  [JSON] = (SELECT * FROM dbo.Product WHERE ProductID = p.ProductID FOR JSON AUTO) 
FROM dbo.Product AS p;

CROSS APPLY

SELECT p.ProductId, p.Name, p.Category, j.son
  FROM dbo.Product AS p 
  CROSS APPLY 
  (SELECT * FROM dbo.Product WHERE ProductID = p.ProductID FOR JSON AUTO) AS j(son);