declare @t table(名称 varchar(10),时间 datetime,金额 int)
insert @t select '张三','2007-1-1',100
union all select '张三','2007-10-30',200
union all select '张三','2006-5-12',400
union all select '马六','2007-11-5',150
union all select '王五','2005-10-1',900
select 名称,
[三个月以内]=sum(case when datediff(month,时间,getdate())<=3 then 金额 else 0 end),
[三个月到一年]=sum(case when datediff(month,时间,getdate())>3 and datediff(month,时间,getdate()) <=12 then 金额 else 0 end),
[一年以上]=sum(case when datediff(month,时间,getdate())>12 then 金额 else 0 end),
[合计]=sum(金额)
from @t
group by 名称
order by 名称
/*
名称 三个月以内 三个月到一年 一年以上 合计
---------- ----------- ----------- ----------- -----------
马六 150 0 0 150
王五 0 0 900 900
张三 200 100 400 700
(所影响的行数为 3 行)
/*