我有一个有三列的表;第一列包含ID,另外两列包含日期(其中最多一列为null,但我认为这不会影响任何事情)。我如何根据哪个日期更大来订购ID?我试过了
ORDER BY CASE
WHEN date1 > date2 THEN date1
ELSE date2
END
但这不起作用。谁能帮我?此外,我见过其他人发布的所有类似问题,以便查询根据第一列对结果进行排序,然后如果第一列为空,则排序第二列。我首先必须定义每个空值吗?我正在通过一个完整的外连接创建这个表,所以这是一个完全不同的问题,所以希望它可以使用空值来完成。
答案 0 :(得分:15)
我相信你的问题与任何一列为NULL时的比较失败有关。所以,你可能需要:
ORDER BY CASE
WHEN date1 IS NULL THEN date2
WHEN date2 IS NULL THEN date1
WHEN date1 > date2 THEN date1
ELSE date2
END
答案 1 :(得分:-2)
...试
SELECT MAX(date1,date2) date FROM table ORDER BY date;