【发布时间】:2014-10-16 15:34:54
【问题描述】:
目前在表格中我有以下数据
排序 | 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 进行排序
编辑:
我已经尝试了 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
【问题讨论】:
-
你有没有尝试过?
-
@Mihai 不会把 9 和 10 放在最后。
-
您对所需的排序顺序有什么标准?
-
这是 SORT 9 和 10 的值让我感到困惑 - 我希望它们在 4 之后列出 | 0 和之前 1 | 5
-
无论如何,你似乎想要:
SELECT [SORT], MIN(QUESTION_SORT) QUESTION_SORT FROM YourTable GROUP BY [SORT]
标签: sql sql-server sql-server-2008 sorting sql-order-by