如何在 SQL 中产生递增的季度、月份和年份输出?

问题描述 投票:0回答:1
年份 四分之一
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

说明: 每 12 行后,年份列递增 1。 月份列一直显示到 12,然后重置。 每 3 行后四分之一列增加 1,但一年后不会重置

sql-server common-table-expression window-functions
1个回答
1
投票

尝试使用计数表来获取行号,并使用模 (%) 和整数除法来导出数字

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
加州年 加州月 加州季度
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
© www.soinside.com 2019 - 2024. All rights reserved.