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 行)
/*