0

SQLServer2008 を使用しています。

SELECT  Amount ,
        OpportunityCloseDate
FROM    dbo.OpportunityMaster AS om

出力は次のとおりです。

Amount      OpportunityCloseDate
------------------------------------
25458.00    2012-07-02 00:00:00.000
54555.00    2012-08-16 00:00:00.000
2154.00     2012-08-21 00:00:00.000
123458.00   2013-08-31 00:00:00.000
54546.00    2013-08-28 00:00:00.000
1235.00     2013-08-22 00:00:00.000
56454.00    2013-08-22 00:00:00.000
156.00      2013-09-13 00:00:00.000
34534.00    2013-09-04 00:00:00.000
34355.00    2013-09-02 00:00:00.000
76568.00    2013-09-01 00:00:00.000
235646.00   2013-09-10 00:00:00.000
54465.00    2013-09-18 00:00:00.000
244254.00   2013-12-19 00:00:00.000

期待される出力:

Amount      Quarter
------------------
82167.00    Q1
671417.00   Q2
244254.00   Q3

私のデータベースでは、年は 4 月 1 日から始まります。このデータを四半期ごとに取得したいと考えています。私は四半期についてあまり知りません..助けてくれてありがとう..

4

1 に答える 1

1

各四半期のデータを合計するとします。

;With Totals as (

    SELECT  SUM(Amount) as Total,
            DATEADD(quarter,DATEDIFF(quarter,0,OpportunityCloseDate),0) as RoundQuarter
    FROM    dbo.OpportunityMaster AS om
    GROUP BY
            DATEADD(quarter,DATEDIFF(quarter,0,OpportunityCloseDate),0)
)
select
    Total,
    DATEPART(year,RoundQuarter) -
       CASE WHEN DATEPART(quarter,RoundQuarter) = 1 THEN 1 ELSE 0 END as FinancialYear,
    CASE WHEN DATEPART(quarter,RoundQuarter) = 1 THEN 4
       ELSE DATEPART(quarter,RoundQuarter) - 1 END as FinancialQuarter
from
    Totals

DATEADD

これは、1900-01-011から発生した (整数の) 四半期数を計算し、同じ数の四半期を に追加することによって機能し1900-01-01ます。これにより、各日付が各四半期の最初の日に切り捨てられます。

1 0 を a に変換するdatetimeと として扱われ1900-01-01ます。

于 2013-09-17T06:06:12.013 に答える