SQL顺序由两个不同(可能为null)的列组成

时间:2012-03-12 02:11:35

标签: sql sql-order-by

我有一个有三列的表;第一列包含ID,另外两列包含日期(其中最多一列为null,但我认为这不会影响任何事情)。我如何根据哪个日期更大来订购ID?我试过了

ORDER BY CASE
WHEN date1 > date2 THEN date1
ELSE date2
END

但这不起作用。谁能帮我?此外,我见过其他人发布的所有类似问题,以便查询根据第一列对结果进行排序,然后如果第一列为空,则排序第二列。我首先必须定义每个空值吗?我正在通过一个完整的外连接创建这个表,所以这是一个完全不同的问题,所以希望它可以使用空值来完成。

2 个答案:

答案 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;