SQL Merge две таблицы — порядок 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

Мне нужно получить таблицу результатов, как показано ниже

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

Здесь хитрость заключается в том, что мне нужно по неделям, если я объединяю все эти таблицы и выполняю упорядочение по убыванию для результирующей таблицы. Он будет упорядочен как всего, неделя1, неделя2 и неделя3.

Но мне нужно сделать заказ по всем, неделям 3, неделям 2 и неделям 1.

Цените ваши ответы.

Спасибо


person Gayan    schedule 27.03.2015    source источник


Ответы (2)


Вот вариант использования выражения case для управления порядком.

order by case [Week] 
    when 'Overall' then 1
    when 'Week3' then 2
    when 'Week2' then 3
    when 'Week1' then 4
end
person Sean Lange    schedule 27.03.2015

Вы можете использовать union all, а затем 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')

Я считаю, что charindex() для этой цели проще, чем массивный оператор case.

person Gordon Linoff    schedule 27.03.2015
comment
Неделя не должна быть в этом charindex, а не в группе? - person Christian Barron; 27.03.2015
comment
@Кристиан Баррон. . . Спасибо. - person Gordon Linoff; 27.03.2015
comment
@GordonLinoffЕсли у нас есть неделя 10, неделя 11, то это будет неделя 11, неделя 10........ неделя 2, неделя 1 - person Gayan; 27.03.2015