2 つのテーブルに問題があります。それらを Item と ItemStatuses と呼びましょう。ステータスの各変更を追跡するため、ItemStatuses テーブルには開始日と終了日があります。終了日が null のステータスを探して、現在のステータスを追跡します。
システムのエラーにより、複数のアイテムに最新のステータスが複数回追加されました。各アイテムの最初のステータス以外をすべて選択する必要があります。すべてのオープンステータスを提供する次のクエリがあります。行番号を使用して最初のステータスをスキップできると考えたので、このルートを試していましたが、これらのセットには複数のアイテムがあるため、アイテムごとに最初のステータスをスキップする必要があります。私はクエリにかなり近いと思いますが、何をする必要があるのか わかりません。
SELECT ID, rn = ROW_NUMBER() OVER (ORDER BY ItemID)
FROM ItemStatuses WHERE ID IN
(
SELECT
s.ID
FROM Items as i
INNER JOIN ItemStatuses AS s ON
i.ID = s.ItemID AND
s.EndDate IS NULL
GROUP BY i.ID
HAVING COUNT(i.ID) > 1
)