2014-09-01 54 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

相關問題