通过在DB2的5列上使用COUNT子句进行分组

通过在DB2的5列上使用COUNT子句进行分组,db2,Db2,我有5列,我应该多次检查相同的帐号 表: In Out AccountNumber Amount Status ---------------------------------------- 1 2 32345678 458.00 Accepted 12 7 12345678 958.00 Rejected 4 5 12345678 478.00 Rejected 6 1 21345678 40

我有5列,我应该多次检查相同的帐号

表:

In  Out AccountNumber   Amount  Status
----------------------------------------
1   2   32345678        458.00  Accepted
12  7   12345678        958.00  Rejected
4   5   12345678        478.00  Rejected
6   1   21345678        408.00  Accepted
期望输出: 12 7 12345678 958.00被拒绝

这是我的疑问:

SELECT AccountNumber, Amount, Status, Out, In
FROM FTM.Table
GROUP BY AccountNumber
HAVING COUNT (AccountNumber) > 1
非常感谢您的帮助。

尝试以下方法:

Select AccountNumber, Amount, Status, Out, In
From
(
SELECT AccountNumber, Amount, Status, Out, In
, rownumber() over (partition by AccountNumber) rn
, count(1) over (partition by AccountNumber) cnt
FROM FTM.Table
)
where cnt>1 and rn=1;
连接到另一个表
期望的结果是什么?期望的结果应该如下所示,因为账号不止一次:输出12 7 12345678 958.00被拒绝为什么要返回这一行,而不是另一行具有相同账号?其实没关系,它可以返回任何一行。Brainsien,非常感谢,我现在确实看到了所有唯一的帐号,如果我想加入一个新表,我应该像下面这样做。选择T1.AccountNumber,T1.Amount,T1.Status,T2.Out,T2.In From选择AccountNumber,Amount,Status,Out,In,rownumber over partition by AccountNumber rn,count1 over partition by AccountNumber cnt From FTM.Table AS T1 JOIN FTM.Table AS T1 ON ID=ID,其中cnt>1且rn=1;从FTM中选择T1.AccountNumber、T1.Amount、T1.Status、T2.Out、T2.In,从FTM中选择AccountNumber、Amount、Status、Out、In、ID、按AccountNumber rn划分的rownumber、按AccountNumber cnt划分的count1。表T1连接T2.ID=T1.ID上的TFM.Table2 T2,其中T1.cnt>1和T1.rn=1。但这不起作用,它让我加入error@Chris连接错误的完整错误消息是什么?我添加了一个连接到另一个表的示例。按原样运行以进行检查。如果不起作用,那么您的Db2平台和版本是什么?@MarkBarinstein,您的连接条件T2.ID=T1.ID不正确,因为没有这样的T1.ID。
WITH TAB (ID, In, Out, AccountNumber, Amount, Status) AS 
(
VALUES
  (1,  1, 2, 32345678, 458.00, 'Accepted')
, (2, 12, 7, 12345678, 958.00, 'Rejected')
, (3,  4, 5, 12345678, 478.00, 'Rejected')
, (4,  6, 1, 21345678, 408.00, 'Accepted')
)
Select T1.AccountNumber, T1.Amount, T1.Status, T2.Out, T2.In 
From 
( 
SELECT AccountNumber, Amount, Status, Out, In, ID
, rownumber() over (partition by AccountNumber) rn
, count(1) over (partition by AccountNumber) cnt 
FROM TAB
) T1 
JOIN TAB T2 
ON T2.ID = T1.ID 
where T1.cnt>1 and T1.rn=1;