【发布时间】:2012-03-12 02:11:35
【问题描述】:
我有一个三列的表;第一列包含 ID,另外两列包含日期(最多一个为空,但我认为这不会影响任何事情)。我将如何根据哪个日期较大来订购 ID?我试过了
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。但是你说它“没有用”。你可以说得更详细点吗?例如,您可以发布无法正确排序的实际数据吗? -
Gabe,哪个数据库将运行查询?
-
很抱歉,我以为它们的工作方式都一样。但我使用的是甲骨文。我不知道这对你们来说是否足够具体。 :S
-
但问题似乎在于空值正在做他们不应该做的事情。我认为 null 值被忽略了,除了在聚合中,但似乎我读错了我的笔记。 :S
标签: sql sql-order-by