Sostituire valori nulli con il precedente valore non n

di il
1 risposte

Sostituire valori nulli con il precedente valore non n

Salve a tutti! Ho un db oracle con una tabella popolata in questo modo:

DATA PREZZO
1/3/2011 1,234
4/5/2011 1,344
11/5/2011 -
13/7/2011 2,569
23/9/2011 3,865
24/9/2011 -
3/10/2011 -
16/11/2011 4,568

Vorrei attraverso una query sostituire i valori null con il precedente valore non null presente ottenendo quindi come risultato:

DATA PREZZO
1/3/2011 1,234
4/5/2011 1,344
11/5/2011 1,344
13/7/2011 2,569
23/9/2011 3,865
24/9/2011 3,865
3/10/2011 3,865
16/11/2011 4,568

Qualcuno può aiutarmi? Grazie!

1 Risposte

  • Re: Sostituire valori nulli con il precedente valore non n

    Questa query fa quello che chiedi:
    Select TO_CHAR(TO_DATE(DATAA,'DD/MM/YYYY'),'DD/MM/YYYY'), LAG(NVL(VALORE,0), 1, 0) OVER (ORDER BY TO_DATE(DATAA,'DD/MM/YYYY') ASC ) VALORE_PRECEDENTE, VALORE, 
    NVL(VALORE, LAG(NVL(VALORE,0), 1, 0) OVER (ORDER BY TO_DATE(DATAA,'DD/MM/YYYY') ASC ) ) AS RISULTATO 
    from (
    SELECT '1/3/2011' AS DATAA, 1234 AS VALORE FROM DUAL UNION ALL
    SELECT '4/5/2011', 1344 FROM DUAL UNION ALL
    SELECT '11/5/2011', NULL FROM DUAL UNION ALL
    SELECT '13/7/2011', 2569 FROM DUAL UNION ALL
    SELECT '23/9/2011', 3865 FROM DUAL UNION ALL
    SELECT '24/9/2011', NULL FROM DUAL UNION ALL
    SELECT '3/10/2011', NULL FROM DUAL UNION ALL
    SELECT '16/11/2011', 4568 FROM DUAL
    ) Order by TO_DATE(DATAA,'DD/MM/YYYY') ASC
Devi accedere o registrarti per scrivere nel forum
1 risposte