我有三个表(IDENTIFIER,LOCGRP,AFFILIATION),它们由一列(id
)连接。它们每个都有“ START_DT”列,而我希望这些列最少。此外,我需要为各列中的每个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
。但这说明了我的目标:从三列中获取最小值。
要重述:内部子查询为每个记录选择三个最小日期。我想进一步为每条记录选择最小值的最小值(一个值)。
SQL小提琴来说明:http://sqlfiddle.com/#!4/9cf9d9/2
有什么建议吗?
答案 0 :(得分:1)
不是MIN
,而是LEAST
:
least(min_i_start, min_lg_start, min_af_start)