Nexiv
Nexiv

Reputation: 49

Displaying different date periods on income data

I have the below query which displays data like so:

Income Type This Month  Last Month  This Year   Last Year
1           179640.00   179640.00   179640.00   179640.00
2           12424440.00 12424440.00 12424440.00 12424440.00


Select
  Income_Type As [Income Type],
  Sum(Income_Amount) As [This Month],
  Sum(Income_Amount) As [Last Month],
  Sum(Income_Amount) As [This Year],
  Sum(Income_Amount) As [Last Year]
From Income I
Left Join Finance_Types FT On I.Income_Type = FT.Type_ID
Group By
Income_Type

The Income table has a Income_Date which is a datetime column.

I'm struggling to get my head around how I would pull out the data for 'This Month', 'Last Month', 'This Year', 'Last Year' with the correct Sums in one query if possible?

Upvotes: 0

Views: 83

Answers (1)

Jim
Jim

Reputation: 3510

Use date functions:

SUM(CASE WHEN YEAR(yourdatefield) = YEAR(GetDate()) - 1 THEN Income_Amount ELSE 0 END) AS 'Last Year'

That case statement only returns the Income_Amount if it was the last year, so you would be summing up only those amounts.

If you're not using SQL Server, the syntax might be a bit different.

Upvotes: 2

Related Questions