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

发布于 2024-12-21 23:20:00 字数 714 浏览 2 评论 0原文

我确信这对于 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

因此,我想要做的是获取每个 ID1 的金额的 SUM(),忽略 ID2,并且仅获取当前的最新日期。正是这个日期给我带来了麻烦。我能得到的最接近的是:

Sum Amounts
6440
1274
4464
4884
1108

当我想要的是这样的时候:

Sum Amounts
6440
1274
4464
2442
2216

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

I'm sure this is a simple problem for SQL/DB2 gurus, but I'm still a novice and I can't think my way through this.

I have a table with four columns: Amount, ID1, ID2, and Date. Here's a sample of the data:

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

So, what I'm trying to do is get a SUM() of the Amounts, for each ID1, ignoring ID2, and only for the currentmost Date. It's the date that's causing me the trouble. The closest I can get it is this:

Sum Amounts
6440
1274
4464
4884
1108

When what I want is this:

Sum Amounts
6440
1274
4464
2442
2216

What I really want is for the last two numbers to only SUM() the amounts for Jun 1, and ignore Dec 1. To basically take the currentmost dates.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

揽月 2024-12-28 23:20:00

这应该适合你:

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

This should work for you:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文