Я хочу получить ID, мин (YEAR_A), мин (QUARTER_A), мин (YEAR_B), мин (QUARTER_B) для каждого ID:
ID TOTAL_A TOTAL_B YEAR_A QUARTER_A YEAR_B QUARTER_B
----------------------------------------------------------------
10 100 200 2005 1 2016 4
10 100 200 2005 2 2016 3
10 100 200 2005 3 2016 2
10 100 200 2005 4 2016 1
11 200 300 2011 1 2018 4
11 200 300 2011 2 2018 3
11 200 300 2011 3 2018 2
11 200 300 2011 4 2018 1
Результат должен быть:
ID TOTAL_A TOTAL_B YEAR_A QUARTER_A YEAR_B QUARTER_B
----------------------------------------------------------------
10 100 200 2005 1 2016 1
11 200 300 2011 1 2018 1
Следующий запрос выполняет работу, но он неэффективен
SELECT DISTINCT
ID,
TOTAL_A, YEAR_A, QUARTER_A,
TOTAL_B, YEAR_B, QUARTER_B
FROM
(SELECT
ID,
TOTAL_A, YEAR_A, QUARTER_A,
TOTAL_B, YEAR_B, QUARTER_B
MIN(YEAR_A) OVER (PARTITION BY ID) MIN_YEAR_A,
MIN(QUARTER_A) OVER (PARTITION BY ID) MIN_QUARTER_A,
MIN(YEAR_B) OVER (PARTITION BY ID) MIN_YEAR_B,
MIN(QUARTER_B) OVER (PARTITION BY ID) MIN_QUARTER_B
FROM
TABLE)
WHERE
YEAR_A = MIN_YEAR_A
AND QUARTER_A = MIN_QUARTER_A
AND YEAR_B = MIN_YEAR_B
AND QUARTER_B = MIN_QUARTER_B
ORDER BY
ID;
Есть идеи?