select
    [name],
    [周记录] = sum(case when datediff(wk,[date],'2005-06-01')=0 then [count] else 0 end),
    [月记录] = sum(case when datediff(mm,[date],'2005-06-01')=0 then [count] else 0 end),
    [年记录] = sum(case when datediff(yy,[date],'2005-06-01')=0 then [count] else 0 end),
from
    AAA
group by
    [name]
order by
    [name]

解决方案 »

  1.   

    select name,sum(count) '周记录' from aaa where date between '2005-06-01' and '2005-06-07' union select name,sum(count) '06月记录' from aaa where date between '2005-06-01' and '2005-06-30' union select name,sum(count) '2005年记录' from aaa where date between '2005-01-01' and '2005-12-31'
      

  2.   

    select name,sum(count) '周记录' from aaa where date between '2005-06-01' and '2005-06-07' group by name union select name,sum(count) '06月记录' from aaa where date between '2005-06-01' and '2005-06-30' group by name union select name,sum(count) '2005年记录' from aaa where date between '2005-01-01' and '2005-12-31' group by name