Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Abrufen von Daten basierend auf dem Monat eines Quartals in SQL

Sie brauchen eine Abfrage wie diese. Stellen Sie sicher, dass Sie NULL angeben sucht nach Daten1, Daten2, wenn Datensätze für zukünftige oder vergangene Daten fehlen, und setzt sie bei Bedarf auf Null zurück.

select To_CHAR(Month,'MON-YY') Month,
        CASE 
                WHEN MOD ( EXTRACT ( MONTH FROM Month ), 3 ) = 1 
                THEN Data2 + LEAD ( Data2 ,1) OVER ( ORDER BY Month ) + LEAD ( Data2 ,2) OVER ( ORDER BY Month )
                WHEN MOD ( EXTRACT ( MONTH FROM Month ), 3 ) = 2 
                THEN LAG(Data1,1) OVER ( ORDER By Month ) + Data2 + LEAD ( Data2 ,1) OVER ( ORDER BY Month )
                WHEN MOD ( EXTRACT ( MONTH FROM Month ), 3 ) = 0 
                THEN LAG(Data1,2) OVER ( ORDER By Month ) + LAG(Data1,1) OVER ( ORDER By Month )+Data2
        END data
FROM 
        Table1;

SQLFiddle