select 来自三个不同列的最小值 oracle

select minimum value from three different columns oracle

我有三个表(IDENTIFIER、LOCGRP、AFFILIATION),它们由一列 (id) 连接。它们每个都有 "START_DT" 列,我想要这些列中的最小值。此外,我需要 select 跨列的每个 id 的最小开始日期。我用来说明的 SQL 是:

SELECT id, min(min_i_start, min_lg_start, min_af_start) AS min_start
FROM (
    SELECT 
        i.id
        , min(i.START_DT) AS min_i_start
        , min(lg.START_DT) AS min_lg_start
        , min(af.START_DT) AS min_af_start
    FROM IDENTIFIER i
    INNER JOIN LOCGRP lg ON lg.id = i.id
    INNER JOIN AFFILIATION af ON af.id = i.id
    GROUP BY i.id
)

当然,我知道这行不通,因为 min() 是 Oracle 中的聚合函数,所以它给出 ORA-00909: invalid number of arguments。但它说明了我的 objective:从三列中获取最小值。

重申:内部子查询select每条记录的三个最小日期。我想进一步 select 每条记录的最小值(一个值)中的最小值。

SQLfiddle来说明:http://sqlfiddle.com/#!4/9cf9d9/2

有什么建议吗?

不是MIN,而是LEAST

least(min_i_start, min_lg_start, min_af_start)