이 here이 here에 유래에 대답 비슷한 질문이 있습니다입니다.
당신은 this.Here 당신이 해봐 예 this 소스에서 참조 할 수있는 방법에 대한 예제와 설명이다 acheive하는 쿼리에 운영자 PIVOT를 사용해야합니다.
[Cheryl],[Drew],[Karen],[Kath],[Kirk],[Matt]
을 따를 설명
쿼리의
1. 첫 번째 부분
SELECT @cols = STUFF((SELECT DISTINCT TOP 100 PERCENT
'],[' + t.Name
FROM TESTTABLE AS t
ORDER BY '],[' + t.Name
FOR XML PATH('')
), 1, 2, '') + ']'
---I assumed your tablename as TESTTABLE---
DECLARE @cols NVARCHAR(2000)
DECLARE @query NVARCHAR(4000)
SELECT @cols = STUFF((SELECT DISTINCT TOP 100 PERCENT
'],[' + t.Name
FROM TESTTABLE AS t
ORDER BY '],[' + t.Name
FOR XML PATH('')
), 1, 2, '') + ']'
SET @query = N'SELECT '+ @cols +' FROM
(SELECT t1.Name , t1.Count FROM TESTTABLE AS t1) p
PIVOT (MAX([Count]) FOR Name IN ('+ @cols +'))
AS pvt;'
EXECUTE(@query)
은 단일 행에 당신에게 당신의 이름 열 값의 좋은 평평 결과를 제공
lea STUFF 및 XML PATH에 대한 자세한 내용은 here 및 here입니다. (- 3 단계 PVT)
즉
Select [Chery],[Drew],[Morgan],[Kath],[Kirk],[Matt]
3
2. SELECT + @cols + FROM
최종 결과 집합 coloumn 이름으로 모든 행을 선택한다.이 쿼리는 크로스 탭 결과를 생성하는 데 필요한 모든 데이터 행을 가져옵니다. 조회 후 (p)은 다음 단계 1.
(SELECT t1.Name, t1.Count FROM TESTTABLE AS t1) p
4. PIVOT 식
PIVOT (MAX (Count) FOR Name IN (@cols) AS pvt
대한 질의를 만족시키기 위해 사용될 수있는 결과의 임시 테이블을 생성하는 실제 작업을 수행 요약 및
Chery | Drew | Morgon | Kath | Kirk | Matt
-------------------------------------------
257 1500 13 500 200 76
+1, 좋은 해결책과 답. TOP 100 PERCENT는 TOP 30으로 변경 될 수 있으므로 많은 행이있는 경우 열의 수를 초과하지 않도록주의하십시오. –