2014-03-12 128 views
0

我知道如何获取组的最后一条记录,但我也需要获取倒数第二条记录。我怎样才能做到这一点?这里是我获得最后记录的代码。在SQL中每组获得倒数第二个记录

select job qjob, max(id) qid from sqbclog group by job 

回答

4
SELECT * 
FROM (
select job AS qjob 
     , id AS qid 
     ,ROW_NUMBER() OVER (PARTITION BY JOB ORDER BY ID DESC) AS RN 
from sqbclog 
)Sub 
WHERE rn <= 2 

这个查询将返回最后两个记录,但如果你只需要在第二个最后再然后在where子句中使用en = 2,否则保持原样。

+0

谢谢你做了这个诀窍,我了解了分区。 :) – Turtleman10

+0

您的欢迎,gald它帮助:) –

0

这应该做到这一点!

select * 
    from sqbclog 
    where id not in (
     select top (
      (select count(*) from sqbclog) - 2 
     ) id 
     from sqbclog 
    ) 
0
select job qjob, max(id) -1 qid 
from sqbclog 
group by job 
0

如果我理解正确的话你的原始查询,它其实给你的最后一排,然后TOP 2应该给你的最后2行:

SELECT TOP 2工作qjob,MAX(ID)的工作QID 从sqbclog 组