안녕하세요...
아래와 같이 조회 쿼리를 작성했습니다.
조회 기간(월)별로
NVL( SUM( CASE WHEN SUBSTR(YYMM,5,2) = substr(:arg_yymm1,5,2) THEN mmQTY END ), 0 ) AS MON01
이 부분을 돌리고 싶습니다.
3개월을 돌릴수도 있고 4개월을 돌릴수도 있습니다.
변수기간 동안만 조회하고 싶은데 어떻게 해야 할까요?
프로그램에 코딩을 하면 FOR문으로 돌리겠는데 쿼리 문으로 작성할려니 도저히 모르겠습니다.
도움 부탁드립니다...꾸벅...^^
SELECT AA, NVL( SUM( CASE WHEN SUBSTR(YYMM,5,2) = substr(:arg_yymm1,5,2) THEN mmQTY END ), 0 ) AS MON01 FROM MONPLAN WHERE YYMM BETWEEN :arg_yymm1 AND :arg_yymm2 GROUP BY YYMM
----결과값----
MON1 MON2 MON3 MON 4
AA 100 1000 300 200
CREATE OR REPLACE FUNCTION fn_test (pd_arg_yymm1 VARCHAR2(8), pd_arg_yymm2 VARCHAR2(8)) RETURN MONPLAN%ROWTYPE PIPELINED IS TYPE MONPLAN_TABLE IS TABLE OF MONPLAN%ROWTYPE; V_MONPLAN MONPLAN_TABLE; BEGIN SELECT AA, NVL( SUM( CASE WHEN SUBSTR(YYMM,5,2) = substr(:pd_arg_yymm1,5,2) THEN mmQTY END ), 0 ) AS MON01 BULK COLLECT INTO V_MONPLAN FROM MONPLAN WHERE YYMM BETWEEN pd_arg_yymm1 AND pd_arg_yymm2 GROUP BY YYMM FOR i IN 1..V_MONPLAN.COUNT LOOP PIPE ROW(V_MONPLAN.(i)); END LOOP; RETURN; END;
잘...모르는 초보지만 저렇게 변수로 할려면 위와같이 함수만들어 써야하지 않나여?