[SQL] SQL 쿼리는 SQL Server의 열을 기준으로 그룹과 함께 쉼표 구분에 집계 된 결과를 얻을 수 있습니다
SQLSQL 쿼리는 SQL Server의 열을 기준으로 그룹과 함께 쉼표 구분에 집계 된 결과를 얻을 수 있습니다
나는 결과가 쉼표 구분에 집계 된 컬럼과 함께 열을 기준으로 그룹을 것 같은 것을 테이블에 SQL 쿼리를 작성해야합니다.
내 표는 아래 형식에있을 것입니다
|`````````|````````|
| ID | Value |
|_________|________|
| 1 | a |
|_________|________|
| 1 | b |
|_________|________|
| 2 | c |
|_________|________|
예상 결과는 다음 형식이어야합니다
|`````````|````````|
| ID | Value |
|_________|________|
| 1 | a,b |
|_________|________|
| 2 | c |
|_________|________|
해결법
-
==============================
1.당신은 XML의 PATH 구조에 사용할 :
당신은 XML의 PATH 구조에 사용할 :
select ID, stuff((select ', ' + Value from YourTable t2 where t1.ID = t2.ID for xml path('')), 1,2,'') [Values] from YourTable t1 group by ID
물건 기능 ','최고의 제거하는 것입니다.
또한 다른 예를 여기에서 볼 수 있습니다 :
-
==============================
2.그냥 균형을보기 위해, 당신은 또한 CTE 만이 할 수있는 그 십자가는 내가 생각하지 않는 방법을 적용 할 때 좋지한다. 이 작업을하지 않는 경우 나는 사과 있도록 발굽이 코딩했습니다.
그냥 균형을보기 위해, 당신은 또한 CTE 만이 할 수있는 그 십자가는 내가 생각하지 않는 방법을 적용 할 때 좋지한다. 이 작업을하지 않는 경우 나는 사과 있도록 발굽이 코딩했습니다.
WITH CommaDelimitedCTE (RowNumber,ID,[Value],[Values]) AS ( SELECT 1,MT.ID , MIN(MT.Value), CAST(MIN(MT.Value) AS VARCHAR(8000)) FROM MyTable MT GROUP BY MT.ID UNION ALL SELECT CT.RowNumber + 1, MT.ID, MT.Value, CT.[Values] + ', ' + MT.Value FROM MyTable MT INNER JOIN CommaDelimitedCTE CT ON CT.ID = MT.ID WHERE MT.[Value] > CT.[Value] ) Select CommaDelimitedCTE.* from CommaDelimitedCTE INNER JOIN (SELECT MT.ID,MAX(RowNumber) as MaxRowNumber from CommaDelimitedCTE GROUP BY MT.ID) Q on Q.MT.ID = CommaDelimitedCTE.MT.ID AND Q.MaxRowNumber = CommaDelimitedCTE.RowNumber
from https://stackoverflow.com/questions/6344950/sql-query-to-get-aggregated-result-in-comma-separators-along-with-group-by-colum by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 CONCAT 그룹 [중복] (0) | 2020.03.24 |
---|---|
[SQL] 표가없는 MS Access에서 UNION 쿼리 (제트 / ACE) (0) | 2020.03.24 |
[SQL] 어떻게 레일과 WHERE 절에서 IN의 대신에 사용 하는가? (0) | 2020.03.24 |
[SQL] MySQL은 : GROUP BY에없는 (0) | 2020.03.24 |
[SQL] 어떻게 MySQL의에서 삭제 캐스케이드에 사용합니까? (0) | 2020.03.24 |