SQL-запрос суммирует значения за фактический год к дате и каков средний год с начала года
Мне нужен запрос, который суммирует расходы Фактическая с начала года, Средняя с начала года (из всех лет, какой у меня средний год), С начала года
Мне нужно 3 части данных: фактическая с начала года | Средний год назад | Прошлых лет |
Это то, что я до сих пор:
select SUM(Expenses)
,DATEADD(year, datediff(year,0,[Date]), 0)
from table1
group by
DATEADD(year, datediff(year,0,[Date]), 0)
)
2 ответа
Решение
Попробуй это:
DECLARE @currentYear int
SELECT @currentYear = DATEPART(year, GETDATE())
SELECT SUM(CASE WHEN DATEPART(year,[date]) = @currentYear
THEN Expenses ELSE 0 END) AS 'Actual YTD',
SUM(Expenses) / COUNT( DISTINCT DATEPART(year,[date])) AS 'Average YTD',
SUM(CASE WHEN DATEPART(year,[date]) = @currentYear -1
THEN Expenses ELSE 0 END) AS 'Last Year YTD'
FROM Table1
Попробуй это
select
AVG(case when
[date]>=DATEADD(year, datediff(year,0,getDate())-1, 0) and
[date]<DATEADD(year, datediff(year,0,getDate()), 0)
then Expenses end)
as average_ytd,
sum(case when
[date]>=DATEADD(year, datediff(year,0,getDate())-1, 0) and
[date]<DATEADD(year, datediff(year,0,getDate()), 0)
then Expenses else 0 end)
as actual_ytd,
sum(case when
[date]>=DATEADD(year, datediff(year,0,getDate())-2, 0) and
[date]<DATEADD(year, datediff(year,0,getDate())-1, 0)
then Expenses else 0 end)
as lat_year_ytd
from
table1