Je veux PIVOT Plusieurs lignes de données en colonne Par colonne fixe surface à la colonne d'en-tête (3 zone est cd, gk, kl)
Exemple Tableau: details_data
code | name | team | score | rank | area
w001 | name01 | AA01 | 10 | 1 | CD
w002 | name02 | AA04 | 05 | 5 | CD
w008 | name08 | AA02 | 08 | 2 | GK
w011 | name11 | AA05 | 15 | 3 | GK
w014 | name14 | AA06 | 10 | 1 | KL
w020 | name20 | AA07 | 20 | 5 | KL
Je veux changer la colonne (cd, gk, kl) en en-tête:
cd_code|cd_name|cd_team|cd_score|cd_rank|gk_code|gk_name|gk_team|gk_score|kl......
w001 |name01 | AA01 | 10 | 1 |w008 |name08 | AA02 | 08 |kl......
w002 |name02 | AA04 | 05 | 5 |w011 |name11 | AA05 | 15 |kl......
................
................
Je veux pivoter la zone de la ligne à l'en-tête de la colonne. Aidez-moi, s'il vous plaît. Merci d'avance ;)
Réponses:
1 pour la réponse № 1Peut-être quelque chose comme ça?
Exemple
;with cte0 as (
Select *
,CN = Dense_Rank() over (Order by area)
,RN = Row_Number() over (Partition by area Order by area,Code)
From details_data
)
Select cd_code = max(case when CN=1 then code end)
,cd_name = max(case when CN=1 then name end)
,cd_team = max(case when CN=1 then team end)
,cd_score = max(case when CN=1 then score end)
,cd_rank = max(case when CN=1 then [rank] end)
,gk_code = max(case when CN=2 then code end)
,gk_name = max(case when CN=2 then name end)
,gk_team = max(case when CN=2 then team end)
,gk_score = max(case when CN=2 then score end)
,gk_rank = max(case when CN=2 then [rank] end)
,kl_code = max(case when CN=3 then code end)
,kl_name = max(case when CN=3 then name end)
,kl_team = max(case when CN=3 then team end)
,kl_score = max(case when CN=3 then score end)
,kl_rank = max(case when CN=3 then [rank] end)
From cte0
Group By RN
Résultats