这是一个非常简单的查询(我认为),但我不能这样做。
我有一些这样的数据:
A B C
1 1100 5
1 1100 5
1 500 1
2 1200 4
2 1200 4
2 600 1
3 1300 3
3 1300 3
3 700 1
我希望使用C的SUM或者类似的东西返回每个A的前B:
A B C
1 1100 10
2 1200 8
3 1300 6
另外,我正在使用DB2 for AS400,所以我不能使用TOP关键字。
编辑@OMG小马:我试过像
那样的东西SELECT
t.A
,MAX(t.B)
,SUM(t.C)
FROM t
GROUP BY
t.A
但它返回C的总和,而不仅仅是所选的那些:
A B C
1 1100 11
2 1200 9
3 1300 7
谢谢!
答案 0 :(得分:4)
看起来你想要每个A值的最大B值,所以
SELECT t.a,
MAX(t.b)
FROM TABLE t
GROUP BY t.a
如果您希望整个记录与A
和MAX(b)
值相关联,请使用:
SELECT t.a,
t.b,
t.c
FROM TABLE t
JOIN (SELECT x.a,
MAX(x.b) AS max_b
FROM TABLE x
GROUP BY x.a) y ON y.a = t.a
AND y.max_b = t.b
答案 1 :(得分:2)
在DB2上,您可以使用FETCH FIRST # ROWS ONLY
模仿TOP谓词,但它在SQL语句的结尾处