Reputation: 1526
I am using SQLServer2008.
SELECT Amount ,
OpportunityCloseDate
FROM dbo.OpportunityMaster AS om
and output is:
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
Expected Output :
Amount Quarter
------------------
82167.00 Q1
671417.00 Q2
244254.00 Q3
In my database Year starts from 1st April. I want to get this data quarterly. I dont know much about quarter..Thanks for help..
Upvotes: 0
Views: 11884
Reputation: 239724
I assume you want to sum the data for each quarter:
;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
This works by working out the (whole number) number of quarters that have occurred since 1900-01-01
1, and then by adding that same number of quarters on to 1900-01-01
. This has the effect of rounding each date down to the 1st day in each quarter.
10 when converted to a datetime
is treated as 1900-01-01
.
Upvotes: 1