쿼리 질문입니다. 0 2 4,257

by 트집이 [PL/SQL] oracle [2017.09.22 15:40:48]


with t(no, item_no, status) as
(
select '1', '10', 'N' from dual union all
select '1', '20', 'N' from dual union all
select '1', '30', 'N' from dual union all
select '2', '10', 'C' from dual union all
select '2', '20', 'N' from dual union all
select '2', '30', 'N' from dual union all
select '3', '10', 'N' from dual union all
select '4', '10', 'N' from dual union all
select '4', '20', 'P' from dual union all
select '4', '30', 'C' from dual
)
select *
from t;

 

위와 같은 데이터가 있다고 가정하고...

제가 원하는 결과는 

no

2

4

이렇게 나오면 됩니다.

no로 group by 를 해서 item_no가 2개 이상인 것인데.. 그 중에 status가 모두 같지 않은 것을 뽑으면 됩니다.

 

그러니까.. 아래와 같은 데이터는 no로 group by 하면 2개 이상이기는 하지만 status값이 C,C 로 같기 때문에 제외되면 됩니다.

1   10  C

1   10  C

 

감사합니다.

 

by 우리집아찌 [2017.09.22 15:43:55]
with t(no, item_no, status) as
(
select '1', '10', 'N' from dual union all
select '1', '20', 'N' from dual union all
select '1', '30', 'N' from dual union all
select '2', '10', 'C' from dual union all
select '2', '20', 'N' from dual union all
select '2', '30', 'N' from dual union all
select '3', '10', 'N' from dual union all
select '4', '10', 'N' from dual union all
select '4', '20', 'P' from dual union all
select '4', '30', 'C' from dual
)
select no 
  from t
 group by no
 having count(distinct status ) >= 2 
  ;

 

 


by jkson [2017.09.22 16:41:44]

총라인수도 체크해야하는 게 아닌가했는데 필요 없네요ㅋ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입