2014-09-01 56 views
1

我需要一些帮助来处理我的查询。一直在寻找年龄,但无法拿出正确的sql语句。Oracle Sql;在两行或更多行中查找相同的列值组合

这是我的表草案DFT(仅1台,这些都是列)

RowID|SID Number|Column C|RELS Number|Column E|Dr Number |Column G | 
1------ | 23101----- |21-8-2014| 22234 ----- | UNR---------| 14243-----|2 
2------ | 23101 ----- |22-8-2014| 22234 ----- | UNS---------| 14243 ---| 2 
3------ | 23101------ |28-8-2014| 22232 ----- | FRE ---------| 14243 ---| 2 

我需要的是以下几点:

,我需要选择所有行&列中的值表中列出的值的组合SID Number和RELS数字是重复的,所以我必须看到的是ony的以下2行:

1------ | 23101----- |21-8-2014| 22234 ----- | UNR---------| 14243-----|2 
2------ | 23101 ----- |22-8-2014| 22234 ----- | UNS---------| 14243 ---| 2 

而不是此:

1------ | 23101----- |21-8-2014| 22234 ----- | UNR---------| 14243-----|2 
2------ | 23101 ----- |22-8-2014| 22234 ----- | UNS---------| 14243 ---| 2 
**3------ | 23101------ |28-8-2014| 22232 ----- | FRE ---------| 14243 ---| 2** 

因为SID数和RELS组合不被复制。

我知道Dr. Dr Number的列值在所有3行中都是相同的。

那对我的sql语句有影响吗?

这是我的发言:

SELECT * 
FROM DRAFT DFT 
INNER JOIN (SELECT SID Number,RELS Number, COUNT(*) AS "TOTALCOUNT 
      FROM DRAFT DTF1GROUP BY SID Number,RELS Number 
      HAVING COUNT (*)>1 
      ) B ON DTF.SID Number=B.SID Number AND DTF.RELS Number=B.RELS Number 

回答

2

只需使用分析功能:

select d.* 
from (select d.*, count(*) over (partition by sid, rels) as cnt 
     from draft 
    ) d 
where cnt > 1; 
+0

THANK YOU SO MUCH! – Rahulg 2014-09-01 16:08:45

相关问题