declare @start int,@end intdeclare @qry nvarchar(100)declare @summary nvarchar(1200)set @start=1set @end=13set @summary=''while not (@start=@end) begin if @start=@end-1 set @qry=(select ('SELECT ('+convert(nvarchar,@start)+')monthNumber, DateName(mm,DATEADD(mm,'+convert(nvarchar,@start)+',-1))monthName')qry) else set @qry=(select ('SELECT ('+convert(nvarchar,@start)+')monthNumber, DateName(mm,DATEADD(mm,'+convert(nvarchar,@start)+',-1))monthName union ')qry) set @summary=@summary+@qry set @start=@start+1 end exec (@summary)
WITHcteTally AS( SELECT TOP 12 N = ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM sys.all_columns) SELECT MonthNumber = N, MonthName = DATENAME(mm,DATEADD(mm,N,-1)) FROM cteTally;
SELECT MonthNumber = N, MonthName = DATENAME(mm,DATEADD(mm,N,-1)) FROM dbo.Tally WHERE N <= 12;