반응형

/********************************************************************************************
-- Title : [SQL2k8] 다양한 검색조건시 정적쿼리 구현
-- Reference : wipscorp.com
-- Key word : 정적 쿼리 static search condition
********************************************************************************************/


DECLARE @ID NVARCHAR(50), @CASE NVARCHAR(50)
      , @SEL NVARCHAR(50)
SELECT @ID = '--', @CASE = '번호/미가입', @SEL = '1/99'

-- 검색 조건 설정
IF (@ID <> '--')                 -- LIKE문 처리위해 % 추가
    SET @ID = '%' + @ID + '%';
IF (@CASE = 'CASE1/CASE2/CASE3') -- 전체 선택시 초기값 부여(NULL 존재시)
    SET @CASE = '--';
IF (@SEL = 'SEL1/SEL2')          -- 전체 선택시 초기값 부여
    SET @CASE = '--';

-- 조건 조회
SELECT 회원_ID, ISNULL(CASE, '미가입') "CASE", ISNULL(SEL, 99) "SEL"
FROM schema1.회원 m
LEFT OUTER JOIN schema1.계약 c
    ON m.회원_key=c.회원_key
LEFT OUTER JOIN schema1.상품 cp
    ON c.회원_key=cp.회원_key
WHERE -- ID 선택시
      (@ID = '--' OR 회원_id LIKE @ID)
      -- CASE 조건
      AND
      (@CASE = '--' OR ISNULL(CASE, '미가입') IN (SELECT item 
                                                  FROM dbo.fn_split(@CASE, N'/')))
      -- SEL 조건
      AND
      (@SEL = '--' OR ISNULL(SEL, 99) IN (SELECT CAST(item AS SMALLINT)
                                          FROM dbo.fn_split(@SEL, N'/')))

 

 

반응형

+ Recent posts