select * from A, 
(select 卡号, max(收银时间) as MaxTime group by 卡号) B
where A.卡号=B.卡号 and A.收银时间=B.MaxTime

解决方案 »

  1.   

    DECLARE @TB TABLE(卡号 VARCHAR(15),余额 INT, 收银时间 SMALLDATETIME)
    INSERT @TB
    SELECT '002000062638',  427,  '2006-10-26 08:30:00.000' UNION ALL 
    SELECT '002000062638',  300,  '2007-11-20 09:20:00.000' UNION ALL 
    SELECT '010000077585',  230,  '2007-02-25 10:53:00.000' UNION ALL 
    SELECT '010000077585',  530,  '2006-02-25 10:53:00.000' UNION ALL 
    SELECT '008000003509',  370,  '2004-03-28 16:13:00.000'SELECT * FROM @TB AS A WHERE NOT EXISTS(SELECT 1 FROM @TB WHERE 卡号=A.卡号 AND  收银时间>A. 收银时间)
    /*
    卡号              余额          收银时间                                                   
    --------------- ----------- ------------------------------------------------------ 
    002000062638    300         2007-11-20 09:20:00
    010000077585    230         2007-02-25 10:53:00
    008000003509    370         2004-03-28 16:13:00
    */
      

  2.   

    --SQL Statemantesselect AA.卡号,BB.余额,AA.收银时间
    from
       (select max(convert(datetime,收银时间)) As 收银时间 ,卡号
          from table
       ) As AA,
      (select 卡号,余额,convert(datetime,收银时间) As 收银时间
         from table  
      ) As BBwhere AA.卡号=BB.卡号
     and AA.收银时间=BB.收银时间
    ---Test select BB.Tdate,BB.ID,BB.YUE
    from 
    (select Tdate,ID,YUE
    from 
    (SELECT '002000062638' aS ID ,  427 AS YUE, CONVERT(DATETIME,'2006-10-26 08:30:00.000') AS Tdate
    union
    SELECT '002000062638' aS ID ,  300 AS YUE, CONVERT(DATETIME,'2007-11-20 09:20:00.000') AS Tdate
    union
    SELECT '010000077585' aS ID ,  230 AS YUE, CONVERT(DATETIME,'2007-02-25 10:53:00.000') AS Tdate
    union
    SELECT '010000077585' aS ID ,  530 AS YUE, CONVERT(DATETIME,'2006-02-25 10:53:00.000') AS Tdate
    union
    SELECT '008000003509' aS ID ,  370 AS YUE, CONVERT(DATETIME,'2004-03-28 16:13:00.000') AS Tdate
    ) AS MM
    ) AS BB, 
    (select max(Tdate) As TDate ,ID
    from
    (
    SELECT '002000062638' aS ID ,  427 AS YUE, CONVERT(DATETIME,'2006-10-26 08:30:00.000') AS Tdate
    union
    SELECT '002000062638' aS ID ,  300 AS YUE, CONVERT(DATETIME,'2007-11-20 09:20:00.000') AS Tdate
    union
    SELECT '010000077585' aS ID ,  230 AS YUE, CONVERT(DATETIME,'2007-02-25 10:53:00.000') AS Tdate
    union
    SELECT '010000077585' aS ID ,  530 AS YUE, CONVERT(DATETIME,'2006-02-25 10:53:00.000') AS Tdate
    union
    SELECT '008000003509' aS ID ,  370 AS YUE, CONVERT(DATETIME,'2004-03-28 16:13:00.000') AS Tdate
     ) AS AA
     group by ID
     ) As NN
     where BB.Tdate=nn.Tdate
     and BB.ID=nn.ID