2016-07-27 4 views
0

現在、私のクエリは3つのレコードを返しています。これは、CRT_STATテーブルが3つの一致するレコードを検出したためです。私は最新の日付のレコードを取得したいと思います。私のCRT_STATテーブルにはDISPOSITION_DATEという列があります。CROSS APPLY最新の日付を取得する

検索するレコードのグループ(この場合は3つ)の最新の日付を選択するクエリのこの部分に日付チェックを追加する必要があります。

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 ... 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

すごく賢いです。私は前にトップ1を選んでいたが、それは私に必要な記録を与えることではなかった。あなたは本当のMVPです。ありがとう – Lostaunaum

関連する問題