表 TEST
姓名 活动类型 日期 
张三 A     2009-1-1
张三 A     2009-1-4
张三 B     2009-3-1
张三 A     2009-8-1
李四 A     2009-5-1
李四 B     2009-9-1想要的结果:姓名 活动类型 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
张三 A     2   0    0    0    0    0    0    1    0    0     0     0
张三 B     0   0    1    0    0    0    0    0    0    0     0     0
李四 A     0   0    0    0    1    0    0    0    0    0     0     0
李四 B     0   0    0    0    0    0    0    0    1    0     0     0不知道SQL怎么写,高手帮下忙哈,3Q!

解决方案 »

  1.   

    select 姓名,活动类型,year(日期) 年
           1月=sum(case when month(日期)=1 then 1 else 0 end),
           2月=sum(case when month(日期)=2 then 1 else 0 end),
           3月=sum(case when month(日期)=3 then 1 else 0 end),
           4月=sum(case when month(日期)=4 then 1 else 0 end),
           5月=sum(case when month(日期)=5 then 1 else 0 end),
           6月=sum(case when month(日期)=6 then 1 else 0 end),
           7月=sum(case when month(日期)=7 then 1 else 0 end),
           8月=sum(case when month(日期)=8 then 1 else 0 end),
           9月=sum(case when month(日期)=9 then 1 else 0 end),
           10月=sum(case when month(日期)=10 then 1 else 0 end),
           11月=sum(case when month(日期)=11 then 1 else 0 end),
           12月=sum(case when month(日期)=12 then 1 else 0 end)
    from tb group by 姓名,活动类型,year(日期)
      

  2.   


    select 姓名,活动类型,
        sum(case when month(日期) = 1 then 1 else 0 end) [1月],
        sum(case when month(日期) = 2 then 1 else 0 end) [2月],
        sum(case when month(日期) = 3 then 1 else 0 end) [3月],
        sum(case when month(日期) = 4 then 1 else 0 end) [4月],
        ...
        sum(case when month(日期) = 12 then 1 else 0 end) [12月]
    from tb
    group by 姓名,活动类型
      

  3.   


    select 姓名,活动类型,year(日期) 年,
           1月=sum(case when month(日期)=1 then 1 else 0 end),
           2月=sum(case when month(日期)=2 then 1 else 0 end),
           3月=sum(case when month(日期)=3 then 1 else 0 end),
           4月=sum(case when month(日期)=4 then 1 else 0 end),
           5月=sum(case when month(日期)=5 then 1 else 0 end),
           6月=sum(case when month(日期)=6 then 1 else 0 end),
           7月=sum(case when month(日期)=7 then 1 else 0 end),
           8月=sum(case when month(日期)=8 then 1 else 0 end),
           9月=sum(case when month(日期)=9 then 1 else 0 end),
           10月=sum(case when month(日期)=10 then 1 else 0 end),
           11月=sum(case when month(日期)=11 then 1 else 0 end),
           12月=sum(case when month(日期)=12 then 1 else 0 end)
    from tb group by 姓名,活动类型,year(日期)
      

  4.   

    2#楼可以,ssp2009好象有点小问题:
    消息 102,级别 15,状态 1,第 2 行
    '=' 附近有语法错误。非常感谢各位,谢谢1