복붙노트

[SQL] 어떻게 2005 SQL Server의 쉼표로 구분 된 목록으로 여러 행을 결합 할 수 있습니다?

SQL

어떻게 2005 SQL Server의 쉼표로 구분 된 목록으로 여러 행을 결합 할 수 있습니다?

지금, 나는이 하나 같이 SQL 쿼리를 가지고 :

SELECT X, Y FROM POINTS

너무 같은 결과를 반환합니다 :

X    Y
----------
12   3
15   2
18   12
20   29

나는 (적합한 HTML 태그에 사용하는)과 같이 모두 한 행에 결과를 반환하고 싶습니다 :

XYLIST
----------
12,3,15,2,18,12,20,29

이 사용하는 단지 SQL을 할 수있는 방법이 있나요?

해결법

  1. ==============================

    1.

    DECLARE @XYList varchar(MAX)
    SET @XYList = ''
    
    SELECT @XYList = @XYList + CONVERT(varchar, X) + ',' + CONVERT(varchar, Y) + ','
    FROM POINTS
    
    -- Remove last comma
    SELECT LEFT(@XYList, LEN(@XYList) - 1)
    
  2. ==============================

    2.신속하고 유용한 답변들 주셔서 감사합니다!

    신속하고 유용한 답변들 주셔서 감사합니다!

    나는 너무이 작업을 수행하는 또 다른 빠른 방법을 발견 :

    SELECT  STUFF(( SELECT ',' + X + ',' + Y
                    FROM Points
                  FOR
                    XML PATH('')
                  ), 1, 1, '') AS XYList
    

    신용이 남자로 이동합니다 :

    http://geekswithblogs.net/mnf/archive/2007/10/02/t-sql-user-defined-function-to-concatenate-column-to-csv-string.aspx

  3. ==============================

    3.병합 트릭을 사용하면 콤마에 대해 걱정할 필요가 없습니다 :

    병합 트릭을 사용하면 콤마에 대해 걱정할 필요가 없습니다 :

    DECLARE @XYList AS varchar(MAX) -- Leave as NULL
    
    SELECT @XYList = COALESCE(@XYList + ',', '') + CONVERT(varchar, X) + ',' + CONVERT(varchar, Y)
    FROM POINTS
    
  4. ==============================

    4.SQL 2017 년부터는 STRING_AGG을 사용할 수 있습니다

    SQL 2017 년부터는 STRING_AGG을 사용할 수 있습니다

    SELECT STRING_AGG (X + ',' + Y, ',') AS XYLIST
    FROM POINTS
    

    https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017

  5. ==============================

    5.

    DECLARE @s VarChar(8000)
    SET @s = ''
    
    SELECT @s = @s + ',' + CAST(X AS VarChar) + ',' + CAST(Y AS VarChar) 
    FROM POINTS
    
    SELECT @s 
    

    그냥 선도 쉼표 제거

  6. from https://stackoverflow.com/questions/180032/how-can-i-combine-multiple-rows-into-a-comma-delimited-list-in-sql-server-2005 by cc-by-sa and MIT license