[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.
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.신속하고 유용한 답변들 주셔서 감사합니다!
신속하고 유용한 답변들 주셔서 감사합니다!
나는 너무이 작업을 수행하는 또 다른 빠른 방법을 발견 :
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.병합 트릭을 사용하면 콤마에 대해 걱정할 필요가 없습니다 :
병합 트릭을 사용하면 콤마에 대해 걱정할 필요가 없습니다 :
DECLARE @XYList AS varchar(MAX) -- Leave as NULL SELECT @XYList = COALESCE(@XYList + ',', '') + CONVERT(varchar, X) + ',' + CONVERT(varchar, Y) FROM POINTS
-
==============================
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.
DECLARE @s VarChar(8000) SET @s = '' SELECT @s = @s + ',' + CAST(X AS VarChar) + ',' + CAST(Y AS VarChar) FROM POINTS SELECT @s
그냥 선도 쉼표 제거
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
'SQL' 카테고리의 다른 글
[SQL] 우리는 두 개의 서로 다른 데이터베이스 테이블에 가입 할 수 있습니까? (0) | 2020.04.10 |
---|---|
[SQL] VARCHAR에 캐스트 INT (0) | 2020.04.10 |
[SQL] SQL 대 '='성능 '과 같은' (0) | 2020.04.10 |
[SQL] 행의 끝에 '^ M'문자 (0) | 2020.04.10 |
[SQL] 조건 고유 제한 조건 (0) | 2020.04.10 |