使用 SQL-Server 2012
我有下表:
Id Description
6192 Salzburg
6193 Salzburg
6194 Salzburg
6196 Innsbruck
6197 Innsbruck
6198 Innsbruck
6199 Innsbruck
6201 Bregenz
6202 Bregenz
6203 Bregenz
我想选择每个不同的“描述”,并将所有 ID 放在一个字符串中:
Description Ids
Salzburg '6192,6193,6194'
Innsbruck '6196,6197,6198'
我在这个网站上看到了一些类似的代码[ How to concatenate text from multiple rows into a single text string in SQL server? ,但我还无法弄清楚我的目的(不想使用 XML 路径!)。这是我到目前为止所尝试过的:
DECLARE @ids AS Nvarchar(MAX)
SELECT @ids = COALESCE(@ids + ',', '') + CAST(t.Id AS nvarchar(5))
FROM (SELECT tmp.Id FROM (SELECT id, [Description] FROM tblMasterPropValues WHERE IdCategory = 253 AND IsActive = 1) as tmp
WHERE [Description] = tmp.[Description]) AS t
SELECT @ids
--SELECT DISTINCT [Description], @ids AS IDs FROM tblMasterPropValues WHERE IdCategory = 253 AND IsActive = 1 AND Id IN (@ids)
我实在无法理解这个问题,希望得到任何帮助。
最佳答案
您可以尝试使用STUFF()
函数
SELECT description, Ids = STUFF(
(SELECT ',' + Id
FROM tblMasterPropValues t1
WHERE t1.description = t2.description
FOR XML PATH (''))
, 1, 1, '') from tblMasterPropValues t2
group by description;
关于sql - 使用 COALESCE 合并多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53391800/