쿼리질문 입니다 0 3 830

by 초리초리뽕 [SQL Query] [2019.07.24 10:03:53]


안녕하세요! 

쿼리를 추출하고자 하는데 어려움이 생겨 문의드립니다..

주문번호 공장 상태
111 0001 진행
111 0001 완료
111 0001 대기
222 0001 진행
222 0002 완료

이런식의 데이터가 있으면 

저는 주문테이블에 있는 모든 진행과 대기인 데이터를 추출하고자 하여

select * from 주문테이블 where 상태 in ('진행','대기')를 입력하니 

주문번호의 진행과대기가 있을때 데이터가 나오는게 아니라 진행 or 대기만 있어도 데이터가 나오니 추출하는데 어려움이 있습니다.

제가 원하는 데이터 형태는 조회를 하면

주문번호 공장 상태
111 0001 진행
111 0001 대기

이런식으로 진행,대기가 없는 주문번호들은 아예 걸러지고 주문번호의 상태가 진행,대기인 항목들만 나왔으면 좋겠습니다

( 상태가 변경이 있으면 새롭게 row들이 추가되는 쿼리입니다)

혹시 저렇게 데이터를 추출하고자 한다면 어떤식으로 쿼리를 짜야하는지 도움 부탁드리겠습니다

by 우리집아찌 [2019.07.24 10:39:08]
where ( 주문번호 , 공장 ) in ( select 주문번호 , 공장 from 주문테이블 where 상태 in ( ‘진행’,’대기’) group by 주문번호 , 공장 having count = 2 )
and 상태 in (‘진행’,’대기’)

 


by 초리초리뽕 [2019.07.24 15:29:18]

답변 주셔서 감사합니다! IN절을 저렇게 사용해도 되는지는 처음 알았네요..

알려주신 쿼리 참고하여 데이터를 조회해봤는데 비슷한 데이터들이 많아서 그런가 원하는 순으로 정렬은 안되네요..

혹시 주문번호와 공장의 그룹핑 되어 있는 상태들에 대한 값을 볼려면 다르게 쿼리를 변경해줘야하나요?

주문번호 공장 상태
111 1 진행
111 1 대기
222 1 진행
222 1 대기

 


by 우리집아찌 [2019.07.24 15:57:59]
order by 주문번호 , 공장 , case when 상태 = ‘진행’ then 1 else 2 end

 

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