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

SQL - как да генерирам редове за всеки месец въз основа на диапазони от дати в съществуващ набор от данни?

Смятам, че е най-лесно да подходя към тези проблеми, като създам списък от цели числа и след това го използвам за увеличаване на датите. Ето един пример:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахване на идентичност от колона в таблица

  2. Някакъв начин за ускоряване на CreateIfNotExists в Entity Framework?

  3. Как да „извадя“ sql таблици?

  4. Как да принудя името на схемата на dbo?

  5. Използвайте SMO, за да промените местоположенията по подразбиране на базата данни на SQL Server