В настоящее время в таблицах я есть данные нижеORDER BY в SQL Server 2008
SORT | QUESTION_SORT ---------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 1 5 | 2 5 | 3 6 | 1 6 | 2 6 | 3 7 | 1 7 | 2 7 | 3 8 | 1 8 | 2 9 | 0 10 | 0
Я хочу Выход отформатированный, как показано ниже на основании следующих критериев:
Я хочу применять сортировку по колонке SORT
всегда
1), если столбец QUESTION_SORT
значение 0
затем выполнить только сортировка
2), если столбец QUESTION_SORT
значение ненулевой затем выполнить сортировку с GROUP BY
из QUESTION_SORT
SORT | QUESTION_SORT ---------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 1 6 | 1 7 | 1 8 | 1 5 | 2 6 | 2 7 | 2 8 | 2 5 | 3 6 | 3 7 | 3 9 | 0 10 | 0
EDIT:
Я попробовал решение, предложенное Lamak но оно пропускает записи, которые имеют значение 2 или 3 как QUESTION_SORT
,
Запрос:
Declare @TmpQuest table (Sort int , QUESTION_SORT int)
insert into @TmpQuest values (1 , 0)
insert into @TmpQuest values (2 , 0)
insert into @TmpQuest values (3 , 0)
insert into @TmpQuest values (4 , 0)
insert into @TmpQuest values (5 , 1)
insert into @TmpQuest values (5 , 2)
insert into @TmpQuest values (5 , 3)
insert into @TmpQuest values (6 , 1)
insert into @TmpQuest values (6 , 2)
insert into @TmpQuest values (6 , 3)
insert into @TmpQuest values (7 , 1)
insert into @TmpQuest values (7 , 2)
insert into @TmpQuest values (7 , 3)
insert into @TmpQuest values (8 , 1)
insert into @TmpQuest values (8 , 2)
insert into @TmpQuest values (9 , 0)
insert into @TmpQuest values (10 , 0)
SELECT
[Sort], MIN(QUESTION_SORT) QUESTION_SORT
FROM @TmpQuest
GROUP BY [SORT]
Выход:
Sort QUESTION_SORT
1 0
2 0
3 0
4 0
5 1
6 1
7 1
8 1
9 0
10 0
Пытались ли вы что-нибудь? – Lamak
@Mihai Это не собирается ставить 9 и 10 в конце. –
Какие критерии у вас есть для желаемого порядка сортировки? –