Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL — jak generować wiersze dla każdego miesiąca na podstawie zakresów dat w istniejącym zestawie danych?

Uważam, że najłatwiej jest podejść do tych problemów, tworząc listę liczb całkowitych, a następnie używając jej do zwiększania dat. Oto przykład:

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. Jak mogę ogólnie posortować kolumnę „Numer wersji” za pomocą zapytania SQL Server?

  2. Czy wyzwalacze SQL CLR mogą to zrobić? Czy jest jakiś lepszy sposób?

  3. SQL Server:wykonaj kopię zapasową wszystkich baz danych

  4. Dlaczego nie mogę użyć aliasu w kolumnie count(*) i odwołać się do niego w klauzuli o?

  5. Dlaczego nie mogę połączyć się z bazą danych mssql za pomocą PHP?