sql >> Database teknologi >  >> RDS >> Sqlserver

SQL - hvordan genererer jeg rækker for hver måned baseret på datointervaller i eksisterende datasæt?

Jeg finder det nemmest at nærme mig disse problemer ved at oprette en liste over heltal og derefter bruge den til at øge datoerne. Her er et eksempel:

with nums as (
      select 0 as n
      union all
      select n + 1 as n
      from nums
      where n < 11
     )
select rowid, datestart, dateend,
       year(dateadd(month, n.n, datestart)) as yr,
       month(dateadd(month, n.n, datestart)) as mon
from table t join
     nums n
     on dateadd(month, n.n - 1, datestart) <= dateend;


  1. Oracle SQL udviklerværktøj:Download og installation

  2. SQL Self Join

  3. SQL-sætning fra DML Trigger

  4. Hvordan kan jeg generere (eller få) et ddl-script på en eksisterende tabel i Oracle? Jeg er nødt til at genskabe dem i Hive