我有一个如下所示的结果集,该结果集是使用Left join和其他条件返回的。
ID1 - table1 (unique)
ID2 - table2 (unique)
type - table2
AMt3 - table2
我的最终结果集为:
ID1 ID2 Type AMT
1835748 21987 9 4
1835748 12898 26 5
1835748 21986 26 5
2242186 21421 1 11
2242186 21422 1 20
2242186 21988 1 30
现在我已经查看了这些数据,并总结了类型和ID1相同的数量。
在上面的示例中 第1行-保持不变 第2 + 3行-总和相加并返回 第4 + 5 + 6行-返回总和
所以最终我只有3条记录需要发送到另一个系统。
是否可以使用查询来实现?到目前为止,我已经给出了简单的表示形式,查询更为复杂。
或者这可以通过Java代码完成吗? 我该如何实现?
答案 0 :(得分:0)
您可以在SQL中完成此操作。使用GROUP BY
和MAX()
。
SELECT T1.ID1,
T2.TYPE,
MAX(T2.ID2) ID2,
SUM(T2.AMT) AMT
FROM <your join>
GROUP BY T1.ID1,
T2.TYPE;
用加入操作替换<your join>
。如果您不喜欢MAX()
,而不喜欢最大的MIN()
,可以将ID2
更改为{{1}}。或全部遗漏。
答案 1 :(得分:0)
谢谢麦克斯!可行!
您可以在SQL中完成此操作。使用GROUP BY和MAX()。
选择T1.ID1, T2.TYPE, MAX(T2.ID2)ID2, SUM(T2.AMT)AMT 从 T1.ID1分组, T2.TYPE; 用您的加入操作替换。如果您希望最小的ID2,而不是最大的ID2,则可以将MAX()更改为MIN()。或全部遗漏。