Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Разделете диапазона от дати на редове година-месец на SQL Server 2005

Ето метод, който използва рекурсивни 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;

Можете да конвертирате крайния резултат във всеки формат, който желаете. Например:

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

или

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разлика в производителността между ляво и вътрешно съединение

  2. Анализирайте низ, разделен със запетая, за да направите IN Списък на низовете в клаузата Where

  3. Sql обединява данни от ред в колона

  4. промяна на стойността на първичния ключ

  5. Съпоставяне на символи/търсене и заместване на знак по знак в SQL Server 2008 R2