请教各位前辈:
    如何按"机器序号"找出时间最近的记录?
原数据表:
日期(char(8)),机器序号,  位置    
'20061010',    'AA',      '东1'
'20051013',    'AA',      '西2'
'20051210',    'BBB',     '南1'
'20060203',    'BBB',     '南2'
'20031102',    'BBB',     '北1'结果:
'20061010','AA','东1'
'20060203','BBB','南2'先谢了!!!

解决方案 »

  1.   

    参考:declare @tab table(Column1 int,Column2 varchar(20),Column3 datetime)
    insert @tab values(10,'am','1999-01-01')
    insert @tab values(11,'am','1999-01-02') -- 相同的记录都显示
    insert @tab values(11,'am','1999-01-02') -- 相同的记录都显示
    insert @tab values(12,'bm','1999-01-03')
    insert @tab values(13,'bm','1999-01-04')
    insert @tab values(14,'cm','1999-01-05')
    insert @tab values(15,'cm','1999-01-06')
    --select * from @tabSELECT * FROM @tab a WHERE not exists (SELECT 1 FROM @tab b WHERE a.Column3<b.Column3 and a.Column2=b.Column2)
      

  2.   

    CREATE TABLE TEST(日期 char(8),机器序号 VARCHAR(10),位置 VARCHAR(10))
    INSERT TEST
    SELECT '20061010',    'AA',      '东1' UNION ALL
    SELECT '20051013',    'AA',      '西2' UNION ALL
    SELECT '20051210',    'BBB',     '南1' UNION ALL
    SELECT '20060203',    'BBB',     '南2' UNION ALL
    SELECT '20031102',    'BBB',     '北1'
    SELECT * FROM TESTSELECT * FROM TEST a WHERE not exists (SELECT 1 FROM TEST b WHERE a.日期<b.日期 and a.机器序号=b.机器序号)DROP TABLE TEST
      

  3.   

    select a.* from tablename a,(selct max(日期) 日期,机器序号 from tablename group by 机器序号) b where a.日期=b.日期 and a.机器序号=b.机器序号
      

  4.   

    declare @t table(日期 char(8),机器序号 varchar(10),位置 varchar(10))
    insert @t
    select '20061010',    'AA',      '东1' union all
    select '20051013',    'AA',      '西2' union all
    select '20051210',    'BBB',     '南1' union all
    select '20060203',    'BBB',     '南2' union all
    select '20031102',    'BBB',     '北1'select * from @t as a 
    where 日期 = (select top 1 日期 from @t where 机器序号 = a.机器序号 order by 日期 desc)/*
    结果:
    '20061010','AA','东1'
    '20060203','BBB','南2'
    */
      

  5.   

    select * from tb a,(select 机器序号 , max(日期) from tb group by 机器序号) b
    where a.机器序号 = b.机器序号 and a.日期 = b.日期
      

  6.   

    select * from 原数据表  as A where A.日期 in ( select max(B.日期) from 原数据表  as B where B.机器序号=A.机器序号)
      

  7.   

    呵呵...
    10分钟之内就有好多的正确答案了!~推荐这个
    ----
    SELECT * FROM TEST a WHERE not exists (SELECT 1 FROM TEST b WHERE a.日期<b.日期 and a.机器序号=b.机器序号)
      

  8.   

    select max(日期), 机器序号 from tablename group by 机器序号