2016-07-27 90 views
0

目前我的查詢返回三條記錄。原因是CRT_STAT表找到了3條匹配的記錄。我想獲得具有最新日期的記錄。我的CRT_STAT表有一個名爲DISPOSITION_DATE的列。CROSS APPLY得到最近的日期

我需要在查詢的這一部分添加一個日期檢查,它選擇它找到的記錄組的最近日期(在本例中爲三個)。

CROSS APPLY (
    SELECT * 
    FROM CCH_PUBLIC.dbo.CRT_STAT as crtStat 
    WHERE crtStat.TRS_IDN = o.TRS_IDN 
    AND crtSTat.DISPOSITION_DATE ='DATE IS MOST RECENT OF THE THREE RECORDS FOUND' 

) crtStat 

這樣做最有效的方法是什麼?

+3

'TOP 1 ... ORDER BY DISPOSITION_DATE DESC'? –

回答

2

只需用前1使用命令:

CROSS APPLY (
    SELECT top 1 * 
    FROM CCH_PUBLIC.dbo.CRT_STAT as crtStat 
    WHERE crtStat.TRS_IDN = o.TRS_IDN 
    order by crtSTat.DISPOSITION_DATE desc 
) crtStat 

這將返回最新記錄。如果您已經從CRT_STAT獲取數據,則也可以在DISPOSITION_DATE中使用行號,而無需使用交叉應用。

+0

夥計那麼聰明。我之前選擇了TOP 1,但它並沒有給我我需要的記錄。你是真正的MVP。謝謝 – Lostaunaum