안녕하세요..
오랜만에 질문을 드려봅니다.
제 머리로는 당최 쿼리문이 생각이 안나서..^^;
CBO Table를 Append한 스탠다드 테이블(VBAK)이 있구요...
CBO Table에는 날짜 타입의 From(ZFrom) ~ To(ZTo) 필드가 있습니다.
이 필드에 값이 ZFrom : 2008.10.01 ZTo : 2012.10.01 이라 가정할 때
프로그램 실행 조회조건으로 2009.10.01 ~ 2010.09.30 값이 들어오게 되는데
VBAK 테이블에서 ZFrom~ZTo의 값이
조회 조건의 기간(2009.10.01 ~ 2010.09.30)을 포함하는 데이타를 조회하는 쿼리문을 작성해야 합니다.
ZFrom~ZTo : 2008.10.01 ~ 2012.10.01 이므로
조회조건 : 2009.10.01 ~ 2010.09.30은 포함이 되겠죠...
이 데이타를 가져오는 쿼리는?
@.@
댓글 5
-
아밥맨
2011.03.18 12:41
-
진현태
2011.03.18 13:12
기간이 하루라도 겹치는게 있다면 가져오게 한다는 조건이라면
WHERE ZFROM <= S_DATUM-HIGH
AND ZTO >= S_DATUM-LOW.
모든기간이 VBAK의 ZFROM, ZTO에 포함되면 가져오게 한다는 조건이라면
WHERE ZFROM <= S_DATUM-LOW
AND ZTO >= S_DATUM-HIGH.
로 하시면 될것같아요
-
ABAPCHOJJA
2011.03.18 13:54
range 변수 하나 만드시고요. 주어진 조건을 I/BT/LOW/HIGH 로 넣어 만드신 후에
zfrom in range or zto in range 로 하심 될 것 같네요. 단
zfrom <= zto 라고 가정한 결과이고 그렇지 않다면
having 절을 사용하여 zfrom <= zto 로 조건을 더 주셔도 될 것 같구요.
or로 조건을 준 이유는 from 은 위 조건에 해당이 되지 않지만 to 가 해당될 수 있고
from 은 조건에 해당이 되지만 to 는 조건에 해당되지 않을 수도 있기 때문입니다.
앞뒤로 걸쳐있는 기간이 있을 수 있기 때문이죠.
그래서 from 과 to 둘중에 하나라도 조건에 해당이 된다면 포함이 될 수 있을 것 같아서요. ^^
-
버미!
2011.03.18 15:25
답변주신 분들 감사드리고요..일단 테스트를 해보아야 겠네요.
워낙 케이스가 많은 지라...휴~~
-
imgood
2011.03.18 17:43
다시 질문드립니다.
ZFrom~ZTo 가 조회조건에 포함되지 않은 걸 빼려면 어떻게 해야 하나요?
ZFrom~ZTo : 2008.10.01 ~ 2012.10.01 이므로
조회조건 : 2009.10.01 ~ 2010.09.30은 포함이 될겁니다.
그러나 ZTo <S_DATUM-LOW OR ZFrom<S_DATUM-HIGH 은 조회조건에 들어가지 않기때문에 빠져야 하지 않을까요?
SELECT * FROM VBAK INTO TABLE GT_VBAK
WHERE ZFROM <= S_DATUM-LOW
AND ZTO >= S_DATUM-HIGH.
이럼 되지않을까요..?