sql >> Databasteknik >  >> RDS >> Oracle

data för senaste 4 kvartalet

Det knepiga är att få den sista dagen i kvartalet.

Den här lösningen beräknar startdagen för intervallet genom att subtrahera 9 månader från måldatumet och sedan trunkera med 'Q' mask som ger oss den första dagen i kvartalet. Vi beräknar sedan det datumet igen , subtrahera en dag och lägg sedan till tolv månader och det ger den sista dagen i det aktuella kvartalet:

with tgt as ( select date '2019-03-30' as dt from dual
              union all select date '2019-02-28' as dt from dual
              union all select date '2019-04-01' as dt from dual
)
select trunc(tgt.dt - interval '9' month, 'Q') as range_st,
       (trunc(tgt.dt - interval '9' month, 'Q') - 1) + interval '12' month as range_end
from tgt
/

Det kan finnas en smartare lösning där ute, men det här är slutet på min fikapaus :)



  1. Hur man beräknar procentuell tillväxt vecka över vecka i MySQL

  2. Mysql Query Error - Auto Coins ADD

  3. kodning UTF8 matchar inte locale en_US; den valda LC_CTYPE-inställningen kräver kodning av LATIN1

  4. Var kan man använda mysql_real_escape_string för att förhindra SQL-injektion?