Oracle: значения SUM между максимальными и минимальными датами - PullRequest
0 голосов
/ 31 октября 2018

Я борюсь с запросом и думаю, что мне нужна помощь. Пример данных, которые я использую: enter image description here

Мне нужно сложить значения между максимальной датой каждого года, которые имеют Т (нулевой) ТИП. Результаты должны быть:

YEAR - SUM
2015 - 10
2016 - 20
2017 - 20
2018 - 35

В сумму должны быть включены строки с ТИПом 1 или 2, но эти строки нельзя использовать при определении МАКС. ДАТЫ по годам. Чтобы быть ясным, в данных, которые я предоставил, если бы мы имели enter image description here

тогда максимальная ДАТА для 2018 года будет 05/07/2018, а результаты запроса:

YEAR - SUM
2015 - 10
2016 - 20
2017 - 20
2018 - 30

Определение максимального значения в год не проблема, но я исключаю 1 и 2 ТИПА, а затем суммирую данные.

заранее спасибо.

РЕДАКТИРОВАТЬ: исправление результатов.

EDIT2: еще один пример

enter image description here

Ожидаемые результаты

YEAR - SUM
2015 - 10
2016 - 20
2017 - 20
2018 - 30

enter image description here

Ожидаемые результаты

YEAR - SUM
2015 - 10
2016 - 20
2017 - 20
2018 - 38

1 Ответ

0 голосов
/ 31 октября 2018

Я не знаю, какое отношение имеет "максимальная дата" к этому. Вы, кажется, хотите:

select to_char(date, 'YYYY') as yr, sum(value)
from t
where type = 0
group by to_char(date, 'YYYY')
order by to_char(date, 'YYYY');

EDIT:

Если вы хотите указать максимальную дату и сумму, используйте условное агрегирование:

select to_char(date, 'YYYY') as yr, max(date) as max_date,
       sum(case when type = 0 then value end) as sum_type0
from t
group by to_char(date, 'YYYY')
order by to_char(date, 'YYYY');
...