日期:2014-05-19  浏览次数:20476 次

一个查询语句问题
有一个表主内容如下(id   为char型   ,版本版次为INT型,三项组合不重复)
ID(docno   )     版本(edition)     版次(bc)
CH001                     1                           1
CH001                     1                           2
CH001                     1                           3
CH001                     2                           1
CH001                     2                           2
CH002                     1                           1
CH003                     1                           1
CH003                     1                           2

我想得到的结果是每个不同ID以及相应的最大版本,版次(版本优先考虑)结果如下:
CH001                     2                           2
CH002                     1                           1
CH003                     1                           2


语句该怎么写啊?想了好久竟然没想出来!



------解决方案--------------------
Select A.* From 表 A
Inner Join
(Select docno, Max(edition) As edition From 表 Group By docno) B
On A.docno = B.docno And A.edition = B.edition
Inner Join
(Select docno, edition, Max(bc) As bc From 表 Group By docno, edition) C
On A.docno = C.docno And A.edition = C.edition And A.bc = C.bc
------解决方案--------------------
select * from tablename a
where not exists (
select 1 from tablename
where id=a.id
and (版本> a.版本 or 版本=a.版本 and 版次> a.版次)
)