SQL 쿼리에서 기존에 프로시저를
8개 매장별로 조회하게 만들었는데..
오늘 요건이 인터넷 매장은 따로 보고...
전체 매장을 선택하면 인터넷 매장을 제외한 나머지들의 합산만 보고 싶다고 하여..
궁리...
프로시저에 임시테이블을 써서.. 분기문으로 나눌수가 없음..
조건절에서 제어해야 할 거 같아서.. 이리저리 구글링해 보니..
CASE WHEN을 OR로 연결해서 쓸 수 있다는 걸 알게 됨..
5000 이란 코드가 들어오면.. 인터넷 매장 (5040)을 제외한 나머지를 조회 시키고..
해당 매장코드가 들어오면 정상조회를 시키는 쿼리를 결국 완성..
- AND
- (
- (
- CASE WHEN @LOC = '5000' THEN '5010' END = 매장코드컬럼
- OR
- CASE WHEN @LOC = '5000' THEN '5020' END = 매장코드컬럼
- OR
- CASE WHEN @LOC = '5000' THEN '5030' END = 매장코드컬럼
- OR
- CASE WHEN @LOC = '5000' THEN '5060' END = 매장코드컬럼
- OR
- CASE WHEN @LOC = '5000' THEN '5070' END = 매장코드컬럼
- OR
- CASE WHEN @LOC = '5000' THEN '5080' END = 매장코드컬럼
- OR
- CASE WHEN @LOC = '5000' THEN '5090' END = 매장코드컬럼
- )
- OR 매장코드컬럼 LIKE ''+ @LOC + ''
- )
또 쿼리 철인가... 쿼리만.. 죽어라 하게 되네...
======================================
2020-12-02 : 좀 나중에 덧붙임..
이렇게 쓰면.. 쿼리 처리는 쉽겠지만.. 성능은 포기해야 할지도..
지금 다시 짜라고 하면.. @LOC 별로 분기를 만들어서.. 귀찮지만(!!)
각각에 해당하는 쿼리를 짜는 것을 선택할 듯...