Методы получения значений, разделенных запятыми, в SQL Server

Чтобы получить значения, разделенные запятыми, в SQL Server вы можете использовать различные методы. Вот несколько подходов:

  1. Использование FOR XML PATH:

    SELECT STUFF(
       (SELECT ', ' + ColumnName
        FROM TableName
        FOR XML PATH('')), 1, 2, '') AS CommaSeparatedValues

    Этот метод объединяет значения из указанного столбца в одну строку, разделенную запятыми.

  2. Использование STRING_AGG (доступно в SQL Server 2017 и более поздних версиях):

    SELECT STRING_AGG(ColumnName, ', ') AS CommaSeparatedValues
    FROM TableName

    Эта функция объединяет значения из указанного столбца, используя указанный разделитель.

  3. Использование рекурсивного CTE (общего табличного выражения):

    WITH CTE AS (
       SELECT ColumnName, ROW_NUMBER() OVER (ORDER BY ColumnName) AS RowNum
       FROM TableName
    ),
    RecursiveCTE AS (
       SELECT ColumnName, RowNum
       FROM CTE
       WHERE RowNum = 1
       UNION ALL
       SELECT RecursiveCTE.ColumnName + ', ' + CTE.ColumnName, CTE.RowNum
       FROM RecursiveCTE
       JOIN CTE ON RecursiveCTE.RowNum + 1 = CTE.RowNum
    )
    SELECT TOP 1 ColumnName
    FROM RecursiveCTE
    ORDER BY RowNum DESC

    Этот метод использует рекурсию для объединения значений из указанного столбца в одну строку.

Это всего лишь несколько примеров того, как можно получить значения, разделенные запятыми, в SQL Server. Вы можете выбрать метод, который лучше всего соответствует вашим требованиям.