图纸号 版次号
1011 V1
1011 V2
1012 V1
有一张表,如上,想通过查询语句得到如下结果:求每个图纸的最新版本号,不知怎么写,在谢谢求各位大神帮助,非常感谢!1011 V2
1012 V1

解决方案 »

  1.   

    -- 建议你多贴一些数据出来
    select 图纸号 , max(版次号)
    from t 
    group by 图纸号
      

  2.   

    select * from T  as A where not exists (select 1 from T as B where A.图纸号=B.图纸号 and CAST(STUFF(A.版次号, 1, 1, '') AS INT) > CAST(STUFF(B.版次号, 1, 1, '') AS INT)) 
      

  3.   

    如果显示列数>2,建议用
    e.g.
    SELECT  图纸号 ,
            版次号
    FROM    ( SELECT    图纸号 ,
                        版次号 ,
                        ROW_NUMBER() OVER ( PARTITION BY 图纸号 ORDER BY 版次号 DESC ) AS RN
              FROM      TabName
            ) AS t
    WHERE   RN = 1;
      

  4.   


    use tempdb
    goif object_id('tempdb..#T') is not null
    drop table #T
    gocreate table #T(DrawingNumber varchar(32), Version varchar(32))
    insert into #T values('1010', 'V2')
    insert into #T values('1010', 'V11')
    goselect DrawingNumber, Version
    from (
    select DrawingNumber, Version,
    row_number() over(
    partition by DrawingNumber
    order by len(Version) desc, Version desc
    ) as rn
    from #T
    ) as t
    where rn = 1drop table #T
      

  5.   


    select 图纸号,版次号 from table as t1 where
          版次号=(select top 1 版次号 from table as t2 where
                     t2.图纸号=t1.图纸号 order by 版次号 desc
                )