1

아래의 예를 참조하십시오 : 행의 수를 동적표시 여러 행이

enter image description here

내가, 하나의 행에 모든 행을 병합주의 할 것을!

출력은 다음과 같이해야합니다 :

enter image description here

당신에게

+0

다양한 명확한 진술은 당신이 무엇을 발견 했는가, 질문? 추신 : 이것은 자주 묻는 질문입니다, "피벗"연구. – philipxy

+0

온라인으로 같은 예를 찾지 못했습니다! – tollamie

+0

동적 열 번호로 끝나고 일반적으로 사용할 수있는 것은 아닙니다. 또한 어떤 순서로 보여주고 싶습니까? 순서를 제공하지 않고 힙과 같이 기본 저장 순서로 이동합니다. –

답변

1

예 감사

Declare @SQL varchar(max) = '' 
Set @SQL = Stuff((Select Distinct ',' +QuoteName('C'+cast(RN as varchar(25))) 
            +','+QuoteName('P'+cast(RN as varchar(25))) 
        From (Select Distinct RN=Row_Number() over (Order By Pays) From YourTable) A 
        Order by 1 For XML Path('')),1,1,'') 

Set @SQL = ' 
Select ' + replace(replace(@SQL,'[P','Pays=[P'),'[C','Count=[C') + ' 
From (
     Select B.* 
     From (
       Select *,RN = Row_Number() over (Order By Pays) 
       From YourTable 
       ) A 
     Cross Apply (values (''P''+cast(A.RN as varchar(25)),A.Pays) 
          ,(''C''+cast(A.RN as varchar(25)),cast(A.Count as varchar(50))) 
        ) B (Item,Value) 
    ) A 
Pivot (max(value) For [Item] in (' + @SQL + ')) p' 
Exec(@SQL); 

반환

도움이된다면

enter image description here


는 생성 된 SQL은 다음과 같습니다 : 당신의 당신이 봤

Select Count=[C1],Pays=[P1],Count=[C2],Pays=[P2],Count=[C3],Pays=[P3],Count=[C4],Pays=[P4] 
From (
     Select B.* 
     From (
       Select *,RN = Row_Number() over (Order By Pays) 
       From YourTable 
       ) A 
     Cross Apply (values ('P'+cast(A.RN as varchar(25)),A.Pays) 
          ,('C'+cast(A.RN as varchar(25)),cast(A.Count as varchar(50))) 
        ) B (Item,Value) 
    ) A 
Pivot (max(value) For [Item] in ([C1],[P1],[C2],[P2],[C3],[P3],[C4],[P4])) p 
+0

고맙습니다. 코드가 많이 도움이되었습니다. – tollamie

+0

@tollamie 해피 도움이되었습니다. –