Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL - Buat tabel temp atau CTE hari pertama bulan dan nama bulan

Salah satu cara menggunakan cte rekursif:

declare @calYear int = 5, @currentYear char(4) = '2014'

;with cte (dt) as (
    select DATEFROMPARTS(@currentyear,1,1) dt
    union all
    select dateadd(month,1,dt) 
    from cte where dt < dateadd(year,@calyear,DATEFROMPARTS(@currentyear,1,1))
    )

select year(dt) YearDesc, datename(month, dt) MonthName, month(dt) MonthNum, dt FirstDayOfMonth 
from cte
order by dt 

Atau menggunakan tabel angka:(dalam hal ini master..spt_values)

declare @calYear int = 5, @currentYear char(4) = '2014'

;with cte2 (dt) as (
    select dateadd(month,number,DATEFROMPARTS(@currentyear,1,1)) dt
    from master..spt_values where type = 'p'
    and number <= 12*@calYear
    )
select year(dt) YearDesc, datename(month, dt) MonthName, month(dt) MonthNum, dt FirstDayOfMonth 
from cte2
order by dt 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menambahkan Filegroup ke Database SQL Server (T-SQL)

  2. Sql Server memicu memasukkan nilai dari baris baru ke tabel lain

  3. Cara Baru Menyalin File di SQL Server 2019

  4. Semua alasan saya tidak dapat mengakses instance SQL 2005

  5. Apa yang harus dilakukan dari tipe tunggu ASYNC NETWORK IO?