Условное агрегирование будет работать ...
select
TotalLastMonth = sum(case when date >= dateadd(month,-1,getdate()) then Test end)
,TotalLast6Months = sum(case when date >= dateadd(month,-6,getdate()) then Test end)
,TotalLast6Months = sum(case when date >= dateadd(month,-12,getdate()) then Test end)
Если вы хотите, чтобы целые месяцы исключали этот месяц, используйте логику DATEADD
, чтобы получить первое и последнее число месяца.
select
--total last month, not including this month
TotalLastMonth = sum(case when date >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) and date < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) then Test end)
--total last 6 months not including this month
,TotalLast6Months = sum(case when date >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-6, 0) and date < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) then Test end)
--total last 12 months not including this month
,TotalLast6Months = sum(case when date >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-12, 0) and date < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) then Test end)