如何根据entrydate sql server提取最后的记录

时间:2014-01-08 13:31:56

标签: sql-server tsql

我有许多重复的工作ID,但输入日期不能重复。我需要根据最后输入日期获取始终唯一的作业ID。我已经用下面的查询解决了它,但是想知道有什么更好的方法来形成相同的sql,当数据对于最佳性能来说是巨大的。请指导我,谢谢。

SELECT  A.JID,A.EntryDate,RefundDate,Comments,Refund, ActionBy 
FROM    (
            (
            select  JID, Max(EntryDate) AS EntryDate 
            from    refundrequested 
            GROUP BY JID
            ) A 
            Inner JOIN 
            (
                    SELECT  JID,ENTRYDATE,refundDate,Comments,refund,ActionBy 
                    from    refundrequested
            ) B 
            ON A.JID=B.JID AND A.EntryDate = B.EntryDate
        )

2 个答案:

答案 0 :(得分:2)

使用row_number()功能通常会快一点:

select  *
from    (
        select  row_number() over (partition by jid 
                                   order by EntryDate desc) as rn
        ,       *
        from    refundrequested
        ) as SubQueryAlias
where   rn = 1

答案 1 :(得分:0)

查询:

SELECT t1.JID,
       t1.EntryDate,
       t1.RefundDate,
       t1.Comments,
       t1.Refund, 
       t1.ActionBy
FROM refundrequested t1
LEFT JOIN refundrequested t2
  ON t2.JID = t1.JID
  AND t2.EntryDate > t1.EntryDate
WHERE t2.JID is null