0

如何添加另一列将它们按季度(1 月至 3 月、4 月至 6 月、6 月至 9 月)进行分区,然后添加另一个计数器以跟踪季度并定义 2011 年第一季度与 2012 年第一季度不同。本质上如何我会添加 Quarters 和 Tracker 列吗?我查看了 ROW_NUMBER()、NTILE 函数,但不确定如何将它们与月份结合起来。

--- Period --- Quarters---Tracker
2012-05-06       2          1
2012-05-20       2          1          
2012-06-03       2          1
2012-07-01       3          2
2012-08-12       3          2
2012-08-26       3          2
2012-09-09       3          2
2012-10-07       4          3
2012-10-21       4          3
2012-11-04       4          3
2012-11-18       4          3
2012-12-02       4          3
2012-12-16       4          3
2012-12-30       4          3 
2013-01-13       1          4
2013-01-27       1          4

真的卡住了!

4

2 回答 2

2

我将季度CASE逻辑放在表定义中,但您也可以将其放在查询中,这样您就不必修改表。

Create  Table Blah 
(
        SampleDate Date Default(Convert(Date,Getdate())),
        Quarters As (   Case
                        When    Month(SampleDate) Between 1 And 3 Then 1
                        When    Month(SampleDate) Between 4 And 6 Then 2
                        When    Month(SampleDate) Between 7 And 9 Then 3
                        Else    4 End)
)

Insert  Blah (SampleDate)
Select  '2012-05-06'
Union   All
Select  '2012-05-20'
Union   All
Select  '2012-06-03'
Union   All
Select  '2012-07-01'
Union   All
Select  '2012-08-12'
Union   All
Select  '2012-09-09'
Union   All
Select  '2012-10-07'
Union   All
Select  '2012-11-04'
Union   All
Select  '2012-12-16'
Union   All
Select  '2013-01-13'
Union   All
Select  '2013-01-27'

Select  *, 
        Dense_Rank() Over (Order By Year(SampleDate),Quarters) As Tracker
From    Blah
于 2013-03-21T17:31:48.480 回答
0

所以你想要一个简单的列来代表你的实际季度?您想在 2012-Q1、2011-Q1、2010-Q1 上使用 SQL 分区?或者你想要2列?一个用于分区,另一个用于实际指示年份?

想一想,你需要一个柜台吗?您不能将另一列设置为年份吗?

所以你会有2列。一个表示季度,另一个表示年份

quarter year
1       2011
1       2012
1       2010
于 2013-03-21T17:12:45.497 回答