Beispiel
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);
Returns Vielen
Wenn es hilft, sieht das generierte SQL wie folgt aus:
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
Wenn Sie verschiedene klare Aussagen von Ihnen hinterfragen gegoogelt, was haben Sie gefunden? PS Dies ist eine FAQ, Forschung "Pivoting". – philipxy
Ich habe das selbe Beispiel nicht online gefunden !! – tollamie
Sie werden mit dynamischen Spaltennummern und in der Regel ist es überhaupt nicht verwendbar. Auch welche Reihenfolge möchtest du zeigen? Ohne Bestellung wird es für die Standard-Speicherung Reihenfolge wie in Heap gehen –