下面的示例查询是我从 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 在 Tuesday之前返回?
Monday
Monday1
Tuesday1
Tuesday
Wednesday
Wednesday1
我的包含两列值的表格如下所示:
Monday Monday
Monday Monday1
Wednesday Wednesday
Wednesday Wednesday1
Tuesday Tuesday
Tuesday Tuesday1
谢谢。
最佳答案
将包含 Monday1
等的列添加到 ORDER BY 语句中:
;WITH Requirements AS (
SELECT *
FROM (VALUES
('Monday','Monday'),
('Monday','Monday1'),
('Wednesday','Wednesday'),
('Wednesday','Wednesday1'),
('Tuesday','Tuesday'),
('Tuesday','Tuesday1')
) as t([day], col2)
)
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 , col2
输出:
day col2
Monday Monday
Monday Monday1
Tuesday Tuesday
Tuesday Tuesday1
Wednesday Wednesday
Wednesday Wednesday1
关于sql - 第二列未在 sql 查询中排序,其中我按顺序使用 case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39013753/