sql >> Database >  >> RDS >> Oracle

Gegevens ophalen op basis van maand van een kwartaal in sql

Zo'n query heb je nodig. Zorg ervoor dat u NULL . opneemt controleert op Data1, Data2 wanneer records ontbreken voor toekomstige datums of datums in het verleden en stelt deze indien nodig standaard op nul.

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




  1. CASE versus DECODE

  2. Prestaties verbeteren door lezen en schrijven te gebruiken om databaseverkeer te splitsen met Moodle 3.9

  3. Een kolom hernoemen zonder de scripts en opgeslagen procedures te verbreken

  4. Oracle [Procedure] - Somfunctie negeert WHERE-clausule