2015-03-27 1 views
0

J'ai un tableau de données comme ci-dessous.SQL Fusionner deux tables - Order BY

Select * from TBL_01 
Week  Group 
Overall Nicol 
Overall Julie 
Overall Kelly 
Select * from TBL_02 
Week  Group 
Week1 Nicol 
Week1 Julie 
Week1 Kelly 
Week2 Nicol 
Week2 Julie 
Week2 Kelly 
Week3 Nicol 
Week3 Julie 
Week3 Kelly 

Je dois obtenir une table de résultat comme ci-dessous

Week  Group 
Overall Nicol 
Overall Julie 
Overall Kelly 
Week3 Nicol 
Week3 Julie 
Week3 Kelly 
Week2 Nicol 
Week2 Julie 
Week2 Kelly 
Week1 Nicol 
Week1 Julie 
Week1 Kelly 

Ici, le parc trickey ici est que je dois par semaine, Si je fais l'union de toutes ces tables et que je fais ordonner par desc pour la table résultante. Il commandera comme global, semaine1, semaine2 et semaine3.

Mais je dois commander par Dans l'ensemble, Semaine3, semaine2 et semaine1

Appréciez vos réponses.

Merci

Répondre

2

Voici option à l'aide d'une expression de cas pour contrôler l'ordre.

order by case [Week] 
    when 'Overall' then 1 
    when 'Week3' then 2 
    when 'Week2' then 3 
    when 'Week1' then 4 
end 
+0

C'est une bonne réponse. Travaillé pour moi Merci –

1

Vous pouvez utiliser union all puis order by:

select week, grp 
from ((select week, grp from tbl_01) union all 
     (select week, grp from tbl_02) 
    ) t 
order by charindex(week, 'Overall,Week3,Week2,Week1') 

Je trouve que charindex() à cet effet est plus simple qu'une déclaration case massif.

+0

devrait pas être semaine dans ce charindex plutôt que grp? –

+0

@ChristianBarron. . . Je vous remercie. –

+0

@GordonLinoff Merci .. son fonctionnement –