CROSS APPLY得到最近的日期

问题描述:

目前我的查询返回三条记录。原因是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'? –

只需用前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