以下是数据库中的记录
日期 订单号 订单序列号 订单量
odate ordcode idx qtp
2012-7-3 AD12C3-095ABCD 100 1024
2012-6-28 AD12C3-095ABCD 200 1248
2012-6-9 AD12C3-095ABCD 200 864
2012-6-28 AD12C3-095ABCD 300 512
2012-6-9 AD12C3-095ABCD 300 608
2012-6-28 AD12C3-095ABCD 400 416
2012-6-9 AD12C3-095ABCD 400 736
2012-7-3 AD12C3-095ABCD 500 632
2012-7-5 AD12C3-095E 100 800
2012-7-2 AD12C3-095F 100 200
2012-7-4 AD12C3-095G 100 400
2012-6-22 AD12C3-096ABCD 100 928
2012-6-1 AD12C3-096ABCD 100 1024
2012-6-22 AD12C3-096ABCD 200 1120
2012-6-1 AD12C3-096ABCD 200 928
2012-6-26 AD12C3-096ABCD 300 576
2012-6-1 AD12C3-096ABCD 300 608
2012-6-22 AD12C3-096ABCD 400 576
2012-6-1 AD12C3-096ABCD 400 640
---------------------------------------------------------
对于以上这些“蓝色”和“红色”的记录,我想取订单号和订单序列号相同的,日期最大的这条记录显示出来。也就是去掉,上面蓝色的记录,显示结果要如下,请问SQL语句要如何写。
日期 订单号 订单序列号 订单量
odate ordcode idx qtp
2012-7-3 AD12C3-095ABCD 100 1024
2012-6-28 AD12C3-095ABCD 200 1248
2012-6-28 AD12C3-095ABCD 300 512
2012-6-28 AD12C3-095ABCD 400 416
2012-7-3 AD12C3-095ABCD 500 632
2012-7-5 AD12C3-095E 100 800
2012-7-2 AD12C3-095F 100 200
2012-7-4 AD12C3-095G 100 400
2012-6-22 AD12C3-096ABCD 100 928
2012-6-22 AD12C3-096ABCD 200 1120
2012-6-26 AD12C3-096ABCD 300 576
2012-6-22 AD12C3-096ABCD 400 576
日期最大的这条记录显示出来:
select * from order where odate in (select max(m.odate) from order as m inner join order as n on m.ordcode=n.ordcode where m.ordcode=n.ordcode and m.idx=n.idx)
order 是表名。这个我没有在sqlserver里面测试,你试试吧,思路就是这样的。