0

四半期ごと (1 月から 3 月、4 月から 6 月、6 月から 9 月) に分割する別の列を追加し、別のカウンターを追加して四半期ごとに追跡し、2011 年第 1 四半期が 2012 年第 1 四半期と同じではないことを定義するにはどうすればよいですか。 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 年第 1 四半期、2011 年第 1 四半期、2010 年第 1 四半期に SQL パーティションを使用したいですか? または、2列が必要ですか?1つは仕切られ、もう1つは実際に年を示すために?

そういえば、カウンターは必要ですか?もう一方の列を年に設定できませんでしたか?

したがって、2列になります。1 つは四半期を示し、もう 1 つは年を示します

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