MSSQL 쿼리 질문입니다 0 2 1,155

by 지메이비 MSSQL [2022.10.14 10:03:36]


execute asp..US_PURCHASE_REPORT_TradeAllRequestList01_Period_ubi '1300','(2676,2677,2680,2681)','20200214','20200214','zz','0'

프로시저 호출은 이런식으로 하는데

'(2676,2677,2680,2681)' 이 부분이 문제입니다..

select    dealerCode, storeCode, stockInDay
             from    orders
             where    dealerCode=@A_dealerCode
            and        storeCode in (@A_storeCode)
            and        stockInDay between @A_startDay and @A_endDay
            group by dealerCode,storeCode,stockInDay

여기서 @A_storeCode에 넣어서 select를 하려고하는데 잘 안되어서 질문드립니다.. in을 가로빼고하는방법은 없겠죠..

 

by pajama [2022.10.14 10:34:16]

string_split 함수가 지원이 되시는 버전이면 아래처럼 가능하겠네요~

 

storeCode in (select * from string_split('2676,2677,2680,2681', ','))


by 마농 [2022.10.14 10:44:50]

괄호는 REPLACE 를 이용해 제거할 수는 있지만 괄호만 뺀다고 해결되는게 아닙니다.
이전 질문글에서도 언급했지만. 인자값은 하나의 값입니다.
잘라서 사용하든가? 다른 형태로 사용하든가 해야 합니다.
- 현재구문 : AND storeCode IN (@A_storeCode)
- 원하는거 : AND storeCode IN (2676,2677,2680,2681)  -- 4개의 숫자값
- 실제동작 : AND storeCode IN ('2676,2677,2680,2681')  -- 하나의 긴 문자값

SELECT dealerCode
     , storeCode
     , stockInDay
  FROM orders
 WHERE dealerCode = @A_dealerCode
   AND storeCode IN (SELECT * FROM STRING_SPLIT(REPLACE(REPLACE(@A_storeCode, '(', ''), ')', ''), ','))
   AND stockInDay BETWEEN @A_startDay AND @A_endDay
 GROUP BY dealerCode, storeCode, stockInDay
;


 

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