by 프리어 [2012.12.07 15:40:42]
사번 이름 지역 나이 전화번호
-------------------------------------------------------------
101 홍길동 서울 30
101 홍길동 서울 _ 010-1234-5678
102 김철수 대전 26 010-321-7654
102 김철수 대전 26 010-765-1532
102 김철수 대전 26 010-934-2356
103 이영희 부산 _ 010-1234-5678
103 이영희 부산 24
사번 이름 지역 나이 전화번호
--------------------------------------------------
101 홍길동 서울 30 010-1234-5678
102 김철수 대전 26 010-321-7654
102 김철수 대전 26 010-765-1532
102 김철수 대전 26 010-934-2356
103 이영희 부산 24 010-1234-5678
질문내용이 부족해서 다시 질문드립니다. DATA를 아래의 결과로 조회하고싶습니다.
어떻게 조회하는게 좋을까요?
언더라인(_)은 공백이 안들어가서 넣은것입니다.
설명이 별도로 없어서 다시 한번 확인질문 들어갑니다.
지금 보여주시는 자료가 모든 자료를 대변하는 자료 맞지요? 다른 경우는 없는 거지요?
그렇다면... 제가 자료에 대한 설명을 보태보면
나이만 있는 자료와 전화번호만 있는 자료가 쌍으로 있어서 두 자료를 하나로 합쳐서 보여주고 싶다?
맞나요?
혹시 쌍으로 있지 않고 나이만 있거나 전화번호만 하나 있는 경우나?
1: 2 또는 2:1 로 짝이 맞지 않는 경우? 등은 없는 거 확실하지요?
질문 설명이 부실하면 예시자료라도 확실해야 합니다.
with t as
(
select '101' as no, '홍길동' as name, '서울' as loc, '30' as age, '' as telno from dual union all
select '101' as no, '홍길동' as name, '서울' as loc, '' as age, '010-1234-5678' as telno from dual union all
select '102' as no, '김철수' as name, '대전' as loc, '26' as age, '010-321-7654' as telno from dual union all
select '102' as no, '김철수' as name, '대전' as loc, '26' as age, '010-765-1532' as telno from dual union all
select '102' as no, '김철수' as name, '대전' as loc, '26' as age, '010-934-2356' as telno from dual union all
select '103' as no, '이영희' as name, '부산' as loc, '' as age, '010-1234-5678' as telno from dual union all
select '103' as no, '이영희' as name, '부산' as loc, '24' as age, '' as telno from dual
)
select no, name, loc, age, telno
from (
select no, name, loc, max(age) as age, max(telno) as telno
from t
where age is null or telno is null
group by no, name, loc
union all
select no, name, loc, age, telno
from t
where not (age is null or telno is null)
)
order by 1