select 회원가입일
회원탈퇴일
회원수정일
from 회원테이블
라는 테이블이 있다고 가정 하고
클라이언트에서 시작일과 종료일을 가져와 그 기간안에 있는 데이터를 표현하려 합니다.
시작일과 종료일을 가져올 때 콤보박스로 회원 가입일인지 탈퇴일인지 또는 수정일인지에 대한 코드도 같이 가져옵니다.
그럴때 where ?? between 시작일 and 종료일 이렇게 표현해야 할 것 같은데 어떻게 표현해야 할지 모르겠습니다.;
DB는 Oracle을 씁니다.
도와주세요 ㅠ
Comment 1
-
건우아빠
2014.08.19 11:17
동적쿼리로 쿼리조건을 만드시는게 좋을듯 한데...
declare @search_gb varchar(10) , @ls_dt1 varchar(8) , @ls_dt2 varchar(8) ;
set @search_gb = '3' ;
set @ls_dt1 = '20140201';
set @ls_dt2 = '20140501' ;
with 회원테이블 as
(
select 1 회원번호 , '20140101' 회원가입일 , '20140331' 회원탈퇴일 , '20140330' 회원수정일 union all
select 2 회원번호 , '20140201' 회원가입일 , '20140631' 회원탈퇴일 , '20140430' 회원수정일 union all
select 3 회원번호 , '20140301' 회원가입일 , '20140709' 회원탈퇴일 , '20140630' 회원수정일 union all
select 4 회원번호 , '20140401' 회원가입일 , '20140811' 회원탈퇴일 , '20140530' 회원수정일)
select 회원가입일
, 회원탈퇴일
, 회원수정일
from 회원테이블
where (case @search_gb
when '1' then
( case when 회원가입일 between @ls_dt1 and @ls_dt2 then 1 else 0 end )
when '2' then
( case when 회원탈퇴일 between @ls_dt1 and @ls_dt2 then 1 else 0 end )
when '3' then
( case when 회원수정일 between @ls_dt1 and @ls_dt2 then 1 else 0 end )
end ) = 1
이렇게 하시는 방법도 있습니다...