SQL / DB2 - 如何选择要使用聚合函数的哪些行以及要忽略哪些行?

时间:2011-12-20 22:40:20

标签: sql db2 sum aggregate

我确信这对于SQL / DB2专家来说是一个简单的问题,但我仍然是一个新手,我无法通过这个思考。

我有一个包含四列的表:Amount,ID1,ID2和Date。以下是数据样本:

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

所以,我要做的是为每个ID1获取Amounts的SUM(),忽略ID2,并且仅针对当前最近的Date。这是导致我麻烦的日期。我能得到的最接近的是:

Sum Amounts
6440
1274
4464
4884
1108

当我想要的是这个:

Sum Amounts
6440
1274
4464
2442
2216

我真正想要的是最后两个数字只是SUM()6月1日的金额,而忽略12月1日。基本上采用当前最晚的日期。

1 个答案:

答案 0 :(得分:2)

这应该适合你:

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