我一个表里有这样的数据
ID ADD_DATE
1   2006-4-1
2   2006-4-7
3   2007-5-3
4   2007-5-6
5   2007-6-3
6   2007-6-12
7   2007-8-9
8   2007-8-10
9   2007-8-12
..  ......我怎么按年月来统计数据呢?我想要的效果如下
时间      数目
2006-4    2
2007-5    2
2007-6    2
2007-8    3
.         .
.         .
.

解决方案 »

  1.   

    select convert(varchar(7),Add_Date,120) 时间  , count(*) 数目
    from 表
    group by convert(varchar(7),Add_Date,120)
      

  2.   

    select datename(yy,ADD_DATE)+'-'+datename(mm,ADD_DATE) as '时间',
           count(1) as '数目'
    from 表
    group by datename(yy,ADD_DATE)+'-'+datename(mm,ADD_DATE)
      

  3.   


    select convert(nvarchar(7), ADD_DATE,120),count(*)
    from tbName
    group by convert(nvarchar(7), ADD_DATE,120)
      

  4.   

    create table tb(ID int,ADD_DATE datetime)  
    insert into tb values(1,   '2006-4-1') 
    insert into tb values(2,   '2006-4-7') 
    insert into tb values(3,   '2007-5-3') 
    insert into tb values(4,   '2007-5-6') 
    insert into tb values(5,   '2007-6-3') 
    insert into tb values(6,   '2007-6-12') 
    insert into tb values(7,   '2007-8-9') 
    insert into tb values(8,   '2007-8-10') 
    insert into tb values(9,   '2007-8-12')  
    go 
    select convert(varchar(7),Add_Date,120) 时间  , count(*) 数目 
    from tb 
    group by convert(varchar(7),Add_Date,120)drop table tb/*
    时间    数目          
    ------- ----------- 
    2006-04 2
    2007-05 2
    2007-06 2
    2007-08 3(所影响的行数为 4 行)
    */
      

  5.   

    如果ID字段有重复的呢?

    ID ADD_DATE 
    1   2006-4-1 
    1   2006-4-7 
    3   2007-5-3 
    4   2007-5-6 
    5   2007-6-3 
    5   2007-6-12 
    7   2007-8-9 
    1   2007-8-10 
    9   2007-8-12 
    ---------------
    ID 时间     数量
    1  2006-4  2
    1  2008-8  1
    .   .       .
    .   .       .
      

  6.   

    select id, convert(varchar(7),Add_Date,120) 时间 , count(*) 数目 
    from blog_article 
    group by convert(varchar(7),Add_Date,120),id
    ------------------
    明白了,是这样。。
    谢谢各位大哥
      

  7.   

    如果ID字段有重复的呢?==
    count(distinct ID)