sql >> Databáze >  >> RDS >> Sqlserver

Rozdělit časové období na řádky rok-měsíc na SQL Server 2005

Zde je metoda, která používá rekurzivní CTE:

with CTE as (
      select id, dateStart as dte, dateEnd
      from t
      union all
      select id, dateadd(month, 1, dte), dateEnd
      from CTE
      where dateadd(month, 1, dte) < dateEnd
     )
select id, dte
from CTE;

Konečný výsledek můžete převést do libovolného formátu. Například:

select id, year(dte) * 10000 + month(dte) as yyyymm_int

nebo

select id, cast(year(dte) * 10000 + month(dte) as varchar(255)) as yyyymm


  1. (mysql, php) Jak získat hodnotu pole auto_increment před vložením dat?

  2. Jak předat pole vlastního typu funkci Postgres

  3. #1111 - Neplatné použití skupinové funkce

  4. Načítání řádků, jejichž zadaná hodnota leží mezi dvěma řádky s danou podmínkou