select dt,max(sign) from a
group by month(dt)

解决方案 »

  1.   

    select dt,max(sign) from a
    group by month(dt)
      

  2.   

    select * 
    from T1 A 
    where not exists(select 1 from T1 where left(dt,7)=left(A.dt,7) and sign>A.sign)
      

  3.   

    select 
        a.* 
    from 
        t1 a 
    where 
        not exists(select 
                       1 
                   from 
                       t1 
                   where 
                       convert(char(7),dt,120)=convert(char(7),a.dt,120) 
                       and 
                       sign>a.sign)
      

  4.   

    Select A.* from T1 A
    Inner Join (Select Month(dt) As dt,Max([sign]) As [sign] from T1 Group By Month(dt)) B
    On Month(A.dt)=B.dt And A.[sign]=B.[sign]
      

  5.   

    --创建测试环境
    create table T1
    (
      dt varchar(10),
      sign int
    )
    insert T1
    select '2005-07-01',1 union
    select '2005-07-12',2 union
    select '2005-08-01',1 union
    select '2005-08-11',3--测试
    select * 
    from T1 A 
    where not exists(select 1 from T1 where left(dt,7)=left(A.dt,7) and sign>A.sign)--删除测试环境
    drop table T1--结果
    /*
    dt         sign        
    ---------- ----------- 
    2005-07-12 2
    2005-08-11 3
    */
      

  6.   

    --创建测试环境
    create table T1
    (
      dt varchar(10),
      sign int
    )
    insert T1
    select '2005-07-01',1 union
    select '2005-07-12',2 union
    select '2005-08-01',1 union
    select '2005-08-11',3--测试
    select distinct a.* from T1 a left join T1 b 
    on year(a.dt)=year(b.dt) and month(a.dt)=month(b.dt) and a.sign<b.sign
    where b.dt is null--删除测试环境
    drop table T1
    (所影响的行数为 4 行)dt         sign        
    ---------- ----------- 
    2005-07-12 2
    2005-08-11 3(所影响的行数为 2 行)
      

  7.   

    select dt,max(sign) from a
    group by month(dt)
    可能是你提交时出错(但系统已记录),你又重新提交了一交吧!