如何在不同组的sql中查找重复数据

时间:2014-09-17 05:09:06

标签: sql oracle group-by duplicates

查看以下数据集:

date                 group  tty  deposit no. 

12/30/2011 00:00:00 | HQ01  | 3 | 000131
08/02/2012 00:00:00 | C03   | 4 | 000131
11/13/2013 00:00:00 | HQ01  | 7 | 000131
12/10/2013 00:00:00 | HQ01  | 7 | 000131
11/30/2011 00:00:00 | HQ01  | 9 | 012040
11/30/2011 00:00:00 | HQ01  | 9 | 012040
11/30/2011 00:00:00 | HQ01  | 9 | 012040
11/30/2011 00:00:00 | HQ01  | 9 | 012040
11/30/2011 00:00:00 | HQ01  | 9 | 012040
11/30/2011 00:00:00 | HQ01  | 9 | 012040
11/30/2011 00:00:00 | HQ01  | 9 | 012040

如您所见,存款号000131属于不同的组和终端(tty)。这个存款号应该是唯一的。只能为团体+终端使用一次。顺便说一句,存款号码可以为THAT组+终端提供超过1行。如果组+终端已使用存款号,则另一组+终端不能使用相同的存款号。

问题:如何运行查询,以便输出显示重复的存款编号(如果存在),针对不同的组+终端?

1 个答案:

答案 0 :(得分:0)

使用GROUP BY与HAVING COUNT()> 1:

SELECT "deposit no." 
FROM table1
GROUP BY "deposit no." 
HAVING COUNT(DISTINCT group || '++' || TO_CHAR(tty)) > 1

我所做的是计算grouptty组合

的不同值