table1
id |
type |
start_date |
end_date |
result |
1 |
01 |
2008-02-10 |
2008-03-09 |
100 |
2 |
01 |
2008-03-10 |
|
200 |
3 |
02 |
2008-02-10 |
|
500 |
4 |
03 |
2008-02-10 |
|
300 |
검색 조건은 type = '01' 일때
검색날짜인 '2008-02-11' 로 검색했을때는 id = 1의 결과값 100 이
검색날짜가 '2008-03-11' 일 경우에는 id = 2 의 결과값인 200을 출력 했음 좋겠는데요...
히스토리 검색이라구 해야 될까요...
type당 start_date랑 end_date가 서로 겹치지 않는 여러개의 row가 생길수도 잇습니다.
이럴때 각각 type로 조건걸린 결과값에서 검색 날짜 조건에 해당되는 값을 가져오려면 어케 해야 되나요...
조금이라두 구현해놓고 수정을 부탁 드려야 하는데.. 툴에서 마구마구 해보는데.. 도통 모양이 안나오네요 ^^
고수님들 부탁 드려요..
해결 됐습니다.....
어케어케.. 하다보니 되네요... case문 사용해서 했습니다.
select * FROM table where type='01'
and '2008-03-08' between
CASE WHEN start_date IS NULL THEN '2007-08-01' ELSE start_date END
and CASE WHEN end_date IS NULL THEN getdate() ELSE end_date END
|