2013-07-30 3 views
2

일반적으로 동일한 값을 가진 여러 행을 단일 행으로 반환하는 SQL 쿼리를 변경하는 방법이 있습니까? 기존 쿼리가 반환하는 경우SQL 여러 행을 단일 행으로 쿼리

예를 들어,이 :

ColA ColB 
1 AA 
1 BB 
1 CC 
2 AA 
3 AA 

나는, 쿼리가 3 행이 반환해야하고, 첫 번째 행에 1의 2 층과 3 결과를 배치 바꿀 수 있도록 다음 행이 있습니다 : 1 AA BB CC?

+0

봐 또는'GROUP BY' 문을 사용하십시오. –

+0

또한 '공용체'를 살펴보십시오. –

+0

어떤 데이터베이스를 사용하고 있습니까? – Taryn

답변

1

정말 좋은하지 않습니다하지만 작업 (내가 MySQL의에서 group_concat를 누락) :

SELECT ColA, 
     ColB=STUFF(
      (SELECT ' ' + ColB 
       FROM dbo.Table1 t2 
       WHERE t1.ColA = t2.ColA 
       FOR XML PATH ('')) 
      , 1, 1, '') 
FROM dbo.Table1 t1 
GROUP BY ColA 

Demo

[편집 : 어떤 이유로 추정 SQL-서버] DISTINCT``에

+0

예, MS SQL Server를 사용하고 있습니다. 나는 이것을 내일 시험해 볼 것이다, 고마워. 하지만 3 회까지 제한됩니까? 거기에 원하는 형식으로 생성 할 수있는 방법이 있습니까? – kmfdm

+0

@kmfdm : 그룹이 중요하지 않은 경우의 크기입니다. –

+0

'value' 함수를 사용하는 것이 좋습니다 -'stuff ((select ''+ dbo.Table1의 ColB는 t2로 t2.ColA = t1.ColA는 xml path ('')). , 'nvarchar (max)'), 1, 1 '')'그렇지 않으면 솔루션이 'A & A'와 같은 임의의 문자열에 맞지 않습니다. 또한이 답변 http://stackoverflow.com/a/12940952/1744834를 참조하십시오. –

관련 문제