Объединение различных значений столбцов в SQL Server

Я пытаюсь объединить несколько столбцов и разделить их запятой, как показано ниже:

Column
------
abc
bcd
bgd
abc

Ожидаемый результат: abc,bcd,bgd

Я использую этот код:

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

    SELECT @result = ISNULL(@result + ', ', '') + Column
    FROM table

Результат, который я получаю,

abc,bcd,bgd,abc

Я не могу выбирать только отдельные значения. Пожалуйста, направляйте.


person Gerald Baretto    schedule 29.08.2015    source источник
comment
Замените таблицу FROM на: FROM (выберите отдельный столбец из таблицы)   -  person sbiz    schedule 29.08.2015


Ответы (1)


Предположим, что имя вашей таблицы tb, тогда ваш sql-запрос будет таким:

SELECT dist.Column  + ','
FROM(
     SELECT DISTINCT t.Column
     FROM dbo.tb t) dist
FOR XML PATH ('')

Используя этот подход, вы получите уникальные значения. Но в конце вы получите лишнюю запятую ','. Это можно удалить с помощью строковых вспомогательных функций. Надеюсь это поможет

person Yasin    schedule 29.08.2015