我有一个包含 3 个日期字段的表格。我试图在每个记录中找到三个日期中最小的一个。
我想做的是:
Select id, some_value, date_a, date_b, date_c,
min(date_a, date_b, date_c) as smallest_date
from some_table;
但这显然行不通。没有规则表明哪个日期可能比其他日期大,有时它们中的任意数量(无到全部)都可能为 NULL。我确信我已经在某个地方看到了一个优雅的解决方案,它不涉及大量丑陋的 case 语句并检查 null,但我似乎不记得如何去做。
(甲骨文 10g)
最佳答案
你想要 LEAST 函数:
SELECT LEAST(date_a, date_b, date_c) as smallest_date
FROM some_table;
AFAIK,如果有些可能为空,那么您将不得不在每列上使用 NVL 来设置默认值:
SELECT LEAST(NVL(date_a,sysdate), NVL(date_b,sysdate), NVL(date_c,sysdate)) as smallest_date
FROM some_table;
关于sql - MIN 来自记录中的字段列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6666187/