У меня есть три таблицы (IDENTIFIER, LOCGRP, AFFILIATION), и они объединены столбцом (id
). Каждый из них имеет столбцы "START_DT", и я хочу, чтобы минимум этих столбцов. Кроме того, мне нужно выбрать минимальную дату начала минимумов для каждого идентификатора в столбцах. 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 fiddle для иллюстрации: http://sqlfiddle.com/#! 4 / 9cf9d9 / 2
Есть предложения?