我有一个三列的表;第一列包含ID,另外两列包含日期(最多一个为空,但我认为这不会影响任何内容)。我怎么去订购基于哪个日期更大的ID?我试过由两个不同的(可能为空)列的SQL顺序
ORDER BY CASE
WHEN date1 > date2 THEN date1
ELSE date2
END
但是这没有奏效。谁能帮我?另外,我见过其他人发布的所有类似问题都有它,以便查询根据第一列排序结果,然后如果第一列为空(第二列)。我首先必须定义每个空值吗?我通过一个完整的外连接创建这个表,所以这将是一个完全不同的问题,所以希望可以用空值完成。
你的'CASE'表达式对我来说看起来很好,除了它不支持'date2'为空的情况;为了支持这一点,你还想编写(说)'ORDER BY CASE WHEN date1> date2 OR date2 IS NULL THEN date1 ELSE date2 END'。但是你说它“不起作用”。你可以说得更详细点吗?例如,您可以发布无法正确排序的实际数据吗? – ruakh 2012-03-12 02:18:15
Gabe,什么数据库将运行查询? – 2012-03-12 02:19:53
对不起,我以为他们都是一样的。但我正在使用Oracle。我不知道这对你们来说是否足够具体。 :S – 2012-03-12 02:26:17