我有以下SQL语句:
SELECT
(
SELECT TOP 1
Site.Reference,
(
SELECT TOP 1 ProjectId FROM Project WHERE Project.Siteid = Site.SiteId ORDER BY ProjectId ASC
) AS FirstId,
(
SELECT TOP 1 ProjectId FROM Project WHERE Project.Siteid = Site.SiteId ORDER BY ProjectId DESC
) AS LastId
FROM
Site
WHERE
(Site.SiteId = 348)
FOR JSON PATH, ROOT('seriesdata')
) AS JSONData
在一对多关系中,Site
是父级,Project
是子级。
此查询的输出为:
JSONData
{"seriesdata":[{"Reference":"SIT0003237","FirstId":216,"LastId":1263}]}
我需要的输出是:
JSONData
{"seriesdata":[{"Reference":"SIT0003237","IdRange":[216,1263]}]}
我找不到如何在SQL Server中使用JSON功能实现这一点。如果能找到解决方案,我将非常感激。
1条答案
按热度按时间t2a7ltrp1#
只需连接两个表并通过引用进行分组,从ProjectId中获取MIN和MAX,将其连接并 Package 在JSON_QUERY中
在您的问题的上下文中,本质没有改变-您需要将两个数字作为字符串连接到json数组中,并将其 Package 在JSON_QUERY中
参见example