MSSQL 쿼리 질문 0 2 893

by 웅아 [SQLServer] [2021.01.07 11:42:15]


TBL_PROD_MA(제품)

컬럼 : 제품코드

제품코드 제품명
A0061020 ABC 15mg/14T
A0061021 ABCD 30mg/28T
A0061022 DDD 60mg/28T
A0061031 ADAD 0.3mg/5A
A0061032 DDDD 0.1mg/10T
A0061172 BBB 10mg/28T

TBL_INVC_MA(인보이스)

컬럼 : 제품코드, 배치번호, 생산일자 등등..

제품코드 배치번호 생산일자
A0061031 1908P01 2022-03-31
A0061031 9999999 2022-05-31
L4000310 69117 2022-03-31
L4000280 72335 2022-03-31
A0061031 1909P01 2022-03-31
A0061031 1910P01 2022-03-31
L4000280 72773 2022-03-31
L4000280 72774 2022-03-31
L4000260 072778A 2022-03-31
L4000290 72779 2022-03-31
A0061032 1902S03 2022-03-31
A0061032 1902S04 2022-03-31
A0061032 1903S01 2022-03-31
A0061032 9999999 2022-03-31

인보이스 테이블에서 A0061020라는 제품코드에 배치번호 1908P01, 1909P01, 1910P01만 허용

인보이스 테이블에서 A0061032라는 제품코드의 배치번호

1903S01만 허용 

다른 제품 전체 조회

다른 제품 전체 조회

배치번호는 무제한 적으로 늘어 납니다.

 

하고싶은건 특정 제품에 배치번호만 선택해서 셀렉트 하고 싶은대요

이때 나머지 제품의 전체가능한 목록도 같이 나와야 합니다.

 

처음엔 NOT IN으로 특정 제품의 배치번호를 조회해 살려둘껀 빼고 제외해야할것을 다 넣어줬는대

배치번호가 앞서 말했듯이 무제한으로 계속 추가되어 추가될때마다 넣어줘야 하는 번거로움이 있었습니다.

이것을 쿼리로 어떻게 해결해야할까요?

 

 

 

by 마농 [2021.01.07 14:16:59]
SELECT *
  FROM tbl_invc_ma
 WHERE (  (제품코드 = 'A0061020' AND 배치번호 IN ('1908P01', '1909P01', '1910P01'))
       OR (제품코드 = 'A0061032' AND 배치번호 IN ('1903S01'))
       OR (제품코드 NOT IN ('A0061020', 'A0061032'))
       )
;

 


by 웅아 [2021.01.07 15:08:01]

정말 감사합니다 왜 요생각을 못했을까..흐규흐규

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