SQL / DB2 - Как я могу выбрать, какие строки использовать агрегатные функции, а какие игнорировать? - PullRequest
0 голосов
/ 21 декабря 2011

Я уверен, что это простая проблема для гуру SQL / DB2, но я все еще новичок и не могу сообразить, как это сделать.

У меня есть таблица с четырьмя столбцами: сумма, ID1, ID2 и дата. Вот образец данных:

Amount  ID1 ID2 Date
3,220   127 149 Dec 1
3,220   127 424 Dec 1
637     130 149 Dec 1
637     130 424 Dec 1
2232    161 149 Dec 1
2232    161 424 Dec 1
1221    372 149 Dec 1
1221    372 424 Dec 1
1221    372 149 Jun 1
1221    372 424 Jun 1
554     54  149 Dec 1
554     54  424 Dec 1
554     54  149 Jun 1
554     54  424 Jun 1

Итак, я пытаюсь получить SUM () сумм для каждого ID1, игнорируя ID2, и только для самой последней даты. Это дата, которая доставляет мне неприятности. Самое близкое, что я могу получить, это:

Sum Amounts
6440
1274
4464
4884
1108

Когда я хочу вот что:

Sum Amounts
6440
1274
4464
2442
2216

Что я действительно хочу, так это чтобы последние два числа только суммировали () суммы за 1 июня и игнорировали 1 декабря. В основном принимаем самые последние даты.

1 Ответ

2 голосов
/ 21 декабря 2011

Это должно работать для вас:

SELECT id1, SUM(amount)
FROM table1 a
WHERE date = (SELECT MAX(date)
              FROM table1 b
              WHERE a.id1 = b.id1
                AND a.id2 = b.id2)
GROUP BY id1
...