try:
Select * from 表 a 
 where 日期 in (Select top 2 日期 from 表 where 表号 = a.表号 oder by 日期 desc)
order by 表号,日期

解决方案 »

  1.   

    select * from DataTable tem where id in (select top 2 id from DataTable where meterid=tem.meterid order by cast([date] as datetime) desc)
      

  2.   

    select a.*,b.*
    from (
    select top 1 * from 表 order by 日期 desc  --最后一笔
    ) a,(
    select top 1 * from 表 where 日期<>(select max(日期) from 表) order by 日期 desc  --倒数第二笔
    ) b 
      

  3.   

    --不知道你要怎么比较?--例如比较读数select a.meterid
      ,最一次读数=a.data
      ,倒数最后一次读数=b.data
    from(
    select meterid,data from 表 a where id=(select top 1 id from 表 where meterid=a.meterid order by date desc)
    ) a inner join (
    select meterid,data from 表 a where id=(select min(id) from(select top 2 id from 表 where meterid=a.meterid order by date desc)a )
    ) b on a.meterid=b.meterid
      

  4.   

    Select * from 表 a 
     where id in (Select top 2 id from 表 where meterid = a.meterid oder by date desc)
    order by meterid,date
      

  5.   

    我最后需要输出的是(表号,最后一次读数,倒数第二次读数),对于每个表,只输出一条记录,zjcxc你的好像输出了很多条冗余数据
      

  6.   

    pengdali,你能不能按照上面提到的输出格式帮我再写一下,谢谢,你的好像对的
      

  7.   

    如果id是唯一的:select * from DataTable tem where id in (select top 2 id from DataTable where meterid=tem.meterid order by cast([date] as datetime) desc)如果时间是唯一的:select * from DataTable tem where [date] in (select top 2 [date] from DataTable where meterid=tem.meterid order by cast([date] as datetime) desc)
    注意一定要cast([date] as datetime) 应为你是字符类型。
      

  8.   

    pengdali(大力 V3.0),你还是没有把最后两次的读数放到一行上啊,我要列出来(表号,最后一次读数,倒数第二次读数),用来做比较的。
      

  9.   

    Select * from 表 a  where id not in
     (Select top 2 id from 表 where meterid = a.meterid oder by date )
    order by meterid
      

  10.   

    Select 表号,
    (Select 读数 from tableName b where 日期 = (Select max(日期) from tableName where 表号 = b.表号)) as 第二次读数,
    (Select 读数 from tableName c where 日期 = (Select min(日期) from tableName where 表号 = c.表号) and 日期 in (Select top 2 日期 from tableName where 表号 = c.表号) ) as 第一次读数,
    from tableName 
    order by 表号,日期
      

  11.   

    txlicenhe(马可)大哥呀,我要得到的是次小值,怎么能用min呢
      

  12.   

    而且执行时返回的结果是“子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”
      

  13.   

    zjcxc(邹建),不好意思,是我的数据有问题,你的语句是正确的