【发布时间】:2023-01-02 16:37:58
【问题描述】:
我有以下 SQL 查询,它不适用于 SQL Server 2017 及更高版本
SELECT
(
SELECT STRING_AGG(d.Name, ',') AS divnames
FROM (
SELECT div.name, MHLId
FROM MsrtProfile mp
INNER JOIN Division div ON mp.DivisionId = div.Id
WHERE mp.mhlid = ph.potentialHospitalNo
GROUP BY div.Name, MHLId
) d
) AS divisionnames
FROM xyz ph
例如我的输出将如下所示
div1,div2,div3
我需要单列行的逗号值。
我在下面有两个表 - 第一个表名是Hospital:
hospitalId name
-----------------
1 a1
2 a2
第二个表名是division
id DivisionName hospitalId
------------------------------
1 d1 1
2 d2 1
3 d3 2
我需要像下面这样的输出,通过 hospitalid 连接第一张和第二张表
DivisionName
-------------
d1,d2
d3
【问题讨论】:
-
请用示例数据、所需结果以及 SQL Server 2016 及更高版本说明您的问题? STRING_AGG 受 2016 年以上的 2017 年支持?在不到 2017 年的时间里,有大量关于如何使用
FOR XML PATH执行此操作的示例。 -
我已经更新了更多的澄清问题。 @戴尔克
-
您可以制作一个 string_agg dll,然后为此制作自定义函数。按照这个:stackoverflow.com/a/48804363/6467840
标签: sql sql-server sql-server-2017