2014-03-12 130 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 組