programing

SQL Server 2005에서 여러 행을 쉼표로 구분된 목록으로 결합하려면 어떻게 해야 합니까?

mailnote 2023. 10. 18. 22:59
반응형

SQL Server 2005에서 여러 행을 쉼표로 구분된 목록으로 결합하려면 어떻게 해야 합니까?

지금은 다음과 같은 SQL 쿼리가 있습니다.

SELECT X, Y FROM POINTS

다음과 같이 결과를 반환합니다.

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

(HTML <AREA> 태그에 사용하기에 적합한) 결과를 한 행에 모두 반환하고 싶습니다.

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

이것을 SQL만 사용해서 할 수 있는 방법이 있습니까?

빠르고 도움이 되는 답변 감사합니다 여러분!

또 다른 빠른 방법을 찾았습니다.

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

공은 이 사람에게 있습니다.

링크

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)

사용.COALESCE트릭, 뒤에 오는 쉼표에 대해서는 걱정하지 않아도 됩니다.

DECLARE @XYList AS varchar(MAX) -- Leave as NULL

SELECT @XYList = COALESCE(@XYList + ',', '') + CONVERT(varchar, X) + ',' + CONVERT(varchar, Y)
FROM POINTS

SQL 2017부터 다음을 사용할 수 있습니다.STRING_AGG

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

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

DECLARE @s VarChar(8000)
SET @s = ''

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

SELECT @s 

선두 쉼표만 없애면 됩니다.

언급URL : https://stackoverflow.com/questions/180032/how-can-i-combine-multiple-rows-into-a-comma-delimited-list-in-sql-server-2005

반응형