How can I get the nulls for the weeks later

Hi all

When I run this code, I get records up to the current week.
How can I view the output that I get nulls for the weeks later. (with the help of the v_numOfWeeks variable in the code)

Thank you
Vikram
DECLARE
   v_query VARCHAR2(4000); 
   TYPE ref_cursor IS REF CURSOR; 
   v_refcur ref_cursor;
   v_sum NUMBER; 
   v_id NUMBER; 
   v_name VARCHAR2(1000); 
   v_weeknum NUMBER; 
   v_pernum NUMBER; 
   v_numOfWeeks NUMBER := 5; 
BEGIN 
v_query := ' SELECT SUM(product_bkg), postn_id, postn_tbl.postn_name, b.week_num, b.period_num
                          FROM ops_cv_extract b, (SELECT row_id, desc_text postn_name
                      FROM s_postn) postn_tbl
                      WHERE lvl_6_id = 5767
                      AND fiscal_year = 2008
                      AND b.week_num < 4
                      AND b.period_num = 3
                      AND b.postn_id = TO_NUMBER(postn_tbl.row_id)
                      GROUP BY postn_id, postn_tbl.postn_name, b.week_num, b.period_num
                      ORDER BY  postn_tbl.postn_name, b.week_num';
                      
OPEN v_refcur FOR v_query;

LOOP 
   FETCH v_refcur INTO v_sum, v_id, v_name, v_weeknum, v_pernum;
   EXIT WHEN v_refcur%notfound; 
   dbms_output.put_line('P'|| v_pernum||'W'|| v_weeknum||' '||v_name||' '||v_sum); 
END LOOP; 
END;
/

This is the output when I execute this code. 

P3W1 COMM CNTRL ISAM 213 26961.61
P3W2 COMM CNTRL ISAM 213 12870.4
P3W3 COMM CNTRL ISAM 213 245.88
P3W1 COMM CNTRL ISAM 273 72831.2
P3W2 COMM CNTRL ISAM 273 8739.38
P3W3 COMM CNTRL ISAM 273 3764.92
P3W1 COMM CNTRL TAM 213 49844
P3W2 COMM CNTRL TAM 213 20515.17
P3W3 COMM CNTRL TAM 213 16167.46
P3W2 COMM CNTRL TAM 216 12561.4
P3W3 COMM CNTRL TAM 216 2027.1
P3W1 COMM CNTRL TAM 273 -3336.71
P3W2 COMM CNTRL TAM 273 -1376.68
P3W3 COMM CNTRL TAM 273 19707.42
P3W1 Damon Walters -609.07
P3W2 Damon Walters 30030.24
P3W3 Damon Walters 37475.1

This is the output I'd like to get

P3W1 COMM CNTRL ISAM 213 26961.61
P3W2 COMM CNTRL ISAM 213 12870.4
P3W3 COMM CNTRL ISAM 213 245.88
P3W4 COMM CNTRL ISAM 213 
P3W5 COMM CNTRL ISAM 213 
P3W1 COMM CNTRL ISAM 273 72831.2
P3W2 COMM CNTRL ISAM 273 8739.38
P3W3 COMM CNTRL ISAM 273 3764.92
P3W4 COMM CNTRL ISAM 273 
P3W5 COMM CNTRL ISAM 273 
P3W1 COMM CNTRL TAM 213 49844
P3W2 COMM CNTRL TAM 213 20515.17
P3W3 COMM CNTRL TAM 213 16167.46
P3W4 COMM CNTRL TAM 213 
P3W5 COMM CNTRL TAM 213 
P3W1 COMM CNTRL TAM 273 -3336.71
P3W2 COMM CNTRL TAM 273 -1376.68
P3W3 COMM CNTRL TAM 273 19707.42
P3W4 COMM CNTRL TAM 273 
P3W5 COMM CNTRL TAM 273 
P3W1 Damon Walters -609.07
P3W2 Damon Walters 30030.24
P3W3 Damon Walters 37475.1
P3W4 Damon Walters 
P3W5 Damon Walters 
Published by: polasa on October 28, 2008 18:42

Hello

The subquery dum has 1 to 5 hard coded values:

(
 44                select 1 week_num from dual
 45                union all
 46                select 2 from dual
 47                union all
 48                select 3 from dual
 49                union all
 50                select 4 from dual
 51                union all
 52                select 5 from dual
 53              ) dum ,
 

Instead, use the following syntax, which produces the values from 1 to n:

(
    SELECT  LEVEL  AS week_num
    FROM    dual
    CONNECT BY  LEVEL <= n
)  dum,

n may be any numeric expression, including a scalar subquery.

Tags: Database

Similar Questions

Maybe you are looking for