在 SQL Server 中连接不同的列值

Ger*_*tto 5 sql-server sql-function sql-server-2008

我正在尝试连接许多列并用逗号分隔,如下所示:

Column
------
abc
bcd
bgd
abc
Run Code Online (Sandbox Code Playgroud)

预期输出: abc,bcd,bgd

我正在使用此代码:

CREATE FUNCTION concatinate(@PK uniqueidentifier)
RETURNS varchar(max)
AS 
BEGIN
    DECLARE @result varchar(max)

    SELECT @result = ISNULL(@result + ', ', '') + Column
    FROM table
Run Code Online (Sandbox Code Playgroud)

我得到的结果是

abc,bcd,bgd,abc
Run Code Online (Sandbox Code Playgroud)

我不能只选择不同的值。请指导。

Yas*_*sin 5

假设您的表名是 tb 那么您的 sql 查询将是:

SELECT dist.Column  + ','
FROM(
     SELECT DISTINCT t.Column
     FROM dbo.tb t) dist
FOR XML PATH ('')
Run Code Online (Sandbox Code Playgroud)

使用这种方法,您将获得独特的值。但最后你会得到一个额外的逗号“,”。这可以通过使用字符串辅助函数来删除。希望这可以帮助