2017-09-07 2 views
0

次のサンプルデータから、最新のレコードのみを取得しようとしています。 (画像とSQLフィドルをご覧ください)。どんな助けもありがとうございます。 (DB:SQL Server 2008の)年の最後のエントリを取得してネクタイを処理するSQLクエリ

SQLフィドルを参照してください:http://www.sqlfiddle.com/#!6/3ce73/1

私は毎年、最高のObjectIDを持っているものを得る同数の場合には、最新のエントリを取得するすべてのレコードをしたいです。

画像入力データと結果は予想:あなたは、このためのウィンドウ関数を使用する必要があります

SELECT t1.*, Year(lastvaluationdate) as Val_year FROM FS t1 
WHERE t1.objectid = (SELECT MAX(t2.objectid) 
       FROM FS t2    
       WHERE t2.ENTITYUID = t1.ENTITYUID and t2.LASTVALUATIONDATE 
       = t1.LASTVALUATIONDATE)      
order by ENTITYUID 
+0

結果は、あなたが求めているものと一致しません。たとえば、EntityUID '1GCPCPEA3AZ122834'には2017年と2016年の両方からのレコードがありますが、結果セットには2017個だけが表示されます。 –

+0

また、私たちは**あなたの質問でテキストを好む**。 1つは、サンプル結果にそのエラーを修正することが可能になることです。私たちはあなたのデータや結果の画像を投稿することは非常に失礼だと考えています。 –

+0

@Joel Coehoom、当初、あなたの時間と助けを感謝します。これは機能します。私の謝罪、私はあなたの言っていることを見て、イメージはここで助けにならないでしょう。私の意図は明らかに分かりやすくすることでしたが。将来の私のための良いレッスン – Abdul

答えて

1
SELECT t2.* 
FROM (SELECT DISTINCT EntityUID, YEAR(LastValuationDate) YR FROM FS) t0 
OUTER APPLY (
    SELECT TOP 1 * 
    FROM FS t1 
    WHERE t1.EntityUID = t0.EntityUID AND YEAR(t1.LastValuationDate) = t0.YR 
    ORDER BY t1.LastValuationDate DESC, t1.ObjectID DESC 
) t2 
ORDER BY EntityUID DESC, LastValuationDate DESC, ObjectID DESC 

Fiddle

0

SELECT FS.* 
FROM (SELECT FS.*, 
      ROW_NUMBER() OVER (PARTITION BY EntityUID, Year(lastvaluationdate) 
           ORDER BY lastvaluationdate DESC, ObjectId DESC 
           ) as seqnum 
     FROM FS 
    ) FS 
WHERE seqnum = 1; 

Input Data and Results expected

私は、サンプルコードが、無駄をしようとしていました

+0

ありがとう@ゴードン、それは働いているようだが、何か間違っている。 200レコードのうち、それは21だけを返します。これは、1つのエントリだけが1年に1レコードだけであるレコードを処理しません!もう1つ、SQL Fiddleと画像iを比較してください。結果として少なくとも5つのレコードが必要ですが、あなたの唯一のものは3つです。私は、私たちは近いうちに年ごとにグループ化されていると思います。 "あなたの質問はエンティティの人生に最新のエントリを持っていますが、毎年各エントリが必要です。" – Abdul

+0

@Abdul私はそれを修正しました。 EntityUIDで分離したいという疑問であなたは決して言わなかった。私たちはちょっとそれを推測しなければなりませんでした。あなたが投稿したイメージを読むのは簡単ではありません(ヒント:ここではテキストが常に良い)。 –

+0

@JoelCoehoornありがとう、これはチャームのように動作します。はい、質問をもう一度読むと、私はEntitiyUIDについて説明しませんでした。それは私の頭の中でしたが、書面では見逃しました。ご指摘ありがとうございます – Abdul

関連する問題