【发布时间】:2016-08-18 08:49:48
【问题描述】:
我从 stackoverflow 获得的以下示例查询很有帮助。我正在使用相同的场景,它已部分解决。
工作查询
SELECT *
FROM Requirements
ORDER BY
CASE Day
WHEN 'Monday' THEN 1
WHEN 'Tuesday' THEN 2
WHEN 'Wednesday' THEN 3
WHEN 'Thursday' THEN 4
WHEN 'Friday' THEN 5
WHEN 'Saturday' THEN 6
WHEN 'Sunday' THEN 7
END
我的查询输出如下,我的表有重复值,Monday1 是在 Monday1 之后返回的,但是为什么 Tuesday1 是在星期二之前返回的呢?
Monday
Monday1
Tuesday1
Tuesday
Wednesday
Wednesday1
我的表有两列值如下所示:
Monday Monday
Monday Monday1
Wednesday Wednesday
Wednesday Wednesday1
Tuesday Tuesday
Tuesday Tuesday1
谢谢。
【问题讨论】:
-
Tuesday1 和 Monday1 被您的 case 语句按顺序捕获,它们应该被评估为 null 并出现在顶部 - 尝试在 SELECT 中评估您的 CASE,然后您可以查看哪些值它得到例如SELECT *, CASE WHEN... 等等 ..END AS MySortOrder FROM...
-
欢迎来到 Stack Overflow!由于您的问题不明确,您的问题可能会被否决/关闭。请考虑重新措辞以更清楚地说明您的要求。见How do I ask a good question?
-
将原始列添加到 order by,类似于
ORDER BY CASE ... END, columnname。
标签: sql sql-server sql-order-by