2017-09-25 3 views
0

CONTRACT_ID에 대해 사용 가능한 다른 유형의 수를 기반으로 결과를 얻고 싶습니다. 다음 테이블이 있습니다.오라클 - 열 값을 기준으로 필터링

테이블 :

______________________________________________________________________________________ 
|Source    | CONTRACT_ID | TYPE  | ADDRESS | PHONE   | 
______________________________________________________________________________________ 
|Source1   | 1234  | INSURED  | unique1 | 4321   | 
______________________________________________________________________________________ 
|Source1   | 1234  | INSURED  | unique1 | 4321   | 
______________________________________________________________________________________ 
|Source1   | 1234  | DRIVER  | unique1 | 4321   | 
______________________________________________________________________________________ 
|Source1   | 1234  | INSURED  | unique1 | 4321   | 
______________________________________________________________________________________ 
|Source2   | 2345  | INSURED  | unique2 | 5678   | 
______________________________________________________________________________________ 
|Source2   | 2345  | DRIVER  | unique2 | 5678   | 
______________________________________________________________________________________ 
|Source2   | 2345  | CONTRACT | unique2 | 5678   | 
______________________________________________________________________________________ 

결과 :

______________________________________________________________________________________ 
|Source    | CONTRACT_ID | ROLES  | ADDRESS | PHONE   | 
______________________________________________________________________________________ 
|Source1   | 1234  | 2   | unique1 | 4321   | 
______________________________________________________________________________________ 
|Source2   | 2345  | 3   | unique2 | 5678   | 
______________________________________________________________________________________ 

즉, 결과표에서 ROLES 열은 별개의 다른 TYPE의 개수이어야 CONTRACT_ID.

아무도 도와 줄 수 있습니까?

+0

지금까지 해보신 것은 무엇입니까? –

+0

나는 서핑을했지만 여전히 다른 varchar 값의 수를 계산하는 방법에 대한 아이디어를 얻지 못했습니다 @ KaushikNayak! – Nidheesh

답변

0

나는 당신이 count(distinct) 찾고있는 생각 :

select Source, CONTRACT_ID, ADDRESS, PHONE, count(distinct type) as roles 
from t 
group by Source, CONTRACT_ID, ADDRESS, PHONE ; 

이 "필터링"아니다. 그것은 "집계"입니다.

1
SELECT max(source) , contract_id , 
count(DISTINCT type) roles , max(address), max(phone) 
FROM Table group by contract_id ;