выберите минимальное значение из трех разных столбцов oracle - PullRequest
0 голосов
/ 07 января 2020

У меня есть три таблицы (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

Есть предложения?

1 Ответ

1 голос
/ 07 января 2020

Не MIN, но LEAST:

least(min_i_start, min_lg_start, min_af_start)
...