Home > Mobile >  How to get similar output in SQL?
How to get similar output in SQL?

Time:10-04

Year Month Quarter
2012 1 1
2012 2 1
2012 3 1
2012 4 2
2012 5 2
2012 6 2
2012 7 3
2012 8 3
2012 9 3
2012 10 4
2012 11 4
2012 12 4
2013 1 5
2013 2 5
2013 3 5
2013 4 6
2013 5 6
2013 6 6
2013 7 7
2013 8 7
2013 9 7
2013 10 8
2013 11 8
2013 12 8

Explanation: Year column increments by 1 after every 12 rows. Month column goes till 12 and then resets. Quarter column increments by 1 after every 3 rows but does not reset after year

CodePudding user response:

Try a tally table to get row numbers and use modulo (%) and integer division to derive the numbers

with cteTally as (
    SELECT TOP 100 ROW_NUMBER () OVER (ORDER BY NAME) -1 as MonthNumber 
    FROM sys.objects 
)
SELECT 
    CEILING(MonthNumber / 12)   2012 as CalYear
    , (MonthNumber % 12)   1 as CalMonth
    , 1   (MonthNumber / 3) as CalQuarter
FROM cteTally as T
CalYear CalMonth CalQuarter
2012 1 1
2012 2 1
2012 3 1
2012 4 2
2012 5 2
2012 6 2
2012 7 3
2012 8 3
2012 9 3
2012 10 4
2012 11 4
2012 12 4
2013 1 5
2013 2 5
2013 3 5
2013 4 6
2013 5 6
2013 6 6
2013 7 7
2013 8 7
2013 9 7
2013 10 8
2013 11 8
2013 12 8
  • Related