「メモ」レコードを分割してランク付けし、ID_Task でグループ化するクエリがあります (ユーザーはタスクごとにメモを追加します)。メモを日付でランク付けしたいのですが、2 つの日付の間でランク付けされるように制限したいとも考えています。
私は SQL Server 2008 を使用しています。これまでのところ、私の SELECT は次のようになっています。
SELECT Note.ID,
Note.ID_Task,
Note.[Days],
Note.[Date],
ROW_NUMBER() OVER (PARTITION BY ID_Task ORDER BY CAST([Date] AS DATE), Edited ASC) AS Rank
FROM
Note
WHERE
Note.Locked = 1 AND Note.Deleted = 0
ここで、WHERE 句を一番下に置くと、ランクはまだありますが、フィルターで除外される可能性があるため、ランク 1 のアイテムを取得する場合と取得しない場合があると思います。では、レコード WHERE のみをパーティション分割して、他のすべてを無視する方法はありますか? 私が推測するサブクエリを分割できます。
ランク番号を使用して、別のクエリで各タスクの最新のメモを見つけることが意図されています。そのクエリでは、この結果 WHERE ランク = 1 と結合します。