设:一数据表有字段及记录如下
编号  卡号   姓名   交款日期     交款数额
001   1003   王兰   2009.01.01    123.56
002   1006   张怀   2009.01.04    145.28
003   1003   王兰   2009.01.07    220.00
004   1003   王兰   2009.01.09    456.20
005   1006   张怀   2009.01.06    21.60
006   1006   张怀   2009.03.04    48.33
007   1003   王兰   2009.01.12    222.30
008   1003   王兰   2009.01.18    425.11
…………想得到同一卡号最后的交款数额,看起来如下结果:
008   1003   王兰   2009.01.18    425.11
006   1006   张怀   2009.03.04    48.33多谢!

解决方案 »

  1.   

    以下两种都可以实现:select * from Table1 where 编号 in(select max(编号) from Table1 group by 卡号) order by 卡号 asc
    select * from Table1 where 交款日期 in(select max(交款日期) from Table1 group by 卡号) order by 卡号 asc
      

  2.   


    --CREATE TABLE TB 
    --(
    --  编号 NVARCHAR(20),
    --  卡号 NVARCHAR(20),
    --  姓名 NVARCHAR(20),
    --  交款日期 DATETIME,
    --  交款数额 DECIMAL(10,2)
    --)--INSERT INTO TB VALUES('001','1003','王兰','2009.01.01','123.56')
    --INSERT INTO TB VALUES('002','1006','张怀','2009.01.04','145.28')
    --INSERT INTO TB VALUES('003','1003','王兰','2009.01.07','220.56')
    --INSERT INTO TB VALUES('004','1003','王兰','2009.01.09','456.20')
    --INSERT INTO TB VALUES('005','1006','张怀','2009.01.06','21.60')
    --INSERT INTO TB VALUES('006','1006','张怀','2009.03.04','48.33')
    --INSERT INTO TB VALUES('007','1003','王兰','2009.01.12','222.30')
    --INSERT INTO TB VALUES('008','1003','王兰','2009.01.18','425.11')SELECT TB.* FROM TB 
    inner JOIN ( SELECT DISTINCT 卡号 AS 卡号 ,MAX(交款日期) AS 交款日期   FROM TB  GROUP BY 卡号 ) t
    on  TB.卡号 = t.卡号 AND TB.交款日期 =t.交款日期
    ORDER BY TB.卡号--编号                   卡号                   姓名                   交款日期                    交款数额
    ---------------------- -------------------- -------------------- ----------------------- ---------------------------------------
    --008                  1003                 王兰                   2009-01-18 00:00:00.000 425.11
    --006                  1006                 张怀                   2009-03-04 00:00:00.000 48.33--(2 row(s) affected)