日期:2014-05-18 浏览次数:20529 次
你可以这样,比如说你的表里面的最小的时间是2006-1-1,那么你按照年来统计,比如说2006年到2008,这个是不是就是三年了,那么这样 select *,case when year(date) between 2004 and 2006 then '2004年到2006年' when year(date) between 2007 and 2009 then '2007年到2009年' when year(date) between 2010 and 2012 then '2010年到2011年' else '2012年' end as 购车年份 from tbl 这样的话你就把年分开了,而且到时候统计,直接按照后面这个购车年份来进行统计
------解决方案--------------------
--姓名 单位 消费 消费时间 --a a 12 2012-3-14 --b b 32 2012-2-21 --a a 42 2012-1-4 --b b 6 2012-3-14 declare @t table (姓名 varchar(5), 单位 varchar(5), 消费 int,消费时间 varchar(20)) insert into @t values('a', 'a' ,12, '2012-3-14') insert into @t values('b', 'b' ,32, '2012-2-21') insert into @t values('a', 'a' ,42, '2012-1-4') insert into @t values('b', 'b', 6 ,'2012-3-14') -- 要求显示的结果集列是这样的 --姓名 单位 本日消费 本月消费 本年消费 select 姓名,单位,消费时间, (select sum(消费) from @t where 消费时间=GETDATE()and t.单位=单位 group by 姓名,单位)本日消费 , (select sum(消费) from @t where datepart(mm,消费时间)=datepart(mm,GETDATE())and t.单位=单位 group by 姓名,单位)本月消费 , (select sum(消费) from @t where datepart(yy,消费时间)=datepart(yy,GETDATE()) and t.单位=单位 group by 姓名,单位)本年消费 from @t t 姓名 单位 消费时间 本日消费 本月消费 本年消费 ----- ----- -------------------- ----------- ----------- ----------- a a 2012-3-14 NULL 12 54 b b 2012-2-21 NULL 6 38 a a 2012-1-4 NULL 12 54 b b 2012-3-14 NULL 6 38 (4 行受影响)