2014-09-01 4 views
1

내 쿼리에 대한 도움이 필요합니다. 나이를 찾고 있었지만 올바른 SQL 문을 찾을 수 없습니다. 나는 모든 행 & 열 값을 선택해야Oracle Sql; 두 개 이상의 행에서 columnvalues의 동일한 조합을 찾습니다.

:

이 내 테이블 초안 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 번호와 RELS 번호의 값 조합은 중복되므로 다음 두 행이 표시되어야합니다.

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

AND NOT 본 :

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 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

는 정말 감사를! – Rahulg

관련 문제