0

私は SQL Server クエリを作成しており、適切に返される行をフィルター処理する方法についての解決策が必要です。

基本的なセットアップは次のとおりです。主に識別子に基づいてテーブルから一連のレコードを選択しています。そのため、特定の識別子に対して、最初に返されるレコードが 100 になる可能性があります。ただし、これらの 100 のレコードの中には、削除する必要のあるレコードがいくつかあります。それらが重複しているからではなく、一方が他方よりも新しいためです。したがって、基本的には、最近作成/変更されたレコードに基づいて結果をさらにフィルタリングする方法が必要です。

理想的には、これらの「古い」レコードをデータベースに含めるべきではないことはわかっていますが、それを制御することはできません。基本的に、人々は新しい情報を反映するために時間をかけてエントリを更新していますが、「古い」エントリを編集するのではなく、毎回新しいエントリが入力されています。したがって、特定の識別子に対して 3 つのエントリが存在する可能性がありますが、最後に入力されたエントリのみが必要です。

T-SQL クエリ文字列でこれを行う簡単な方法はありますか? これは、Access クエリの "Last of" 関数に似ています。各レコードに適切にフォーマットされた日付列があります。

ありがとう!

これまでのクエリ文字列(VB構文を許してください):

    "SELECT *" & _
    "FROM Performance_Override " & _
    "WHERE ([Deal_Name] = " & "'" & Range("ID").value & "'" & " or" & _
    " [UNIQUE_ID] LIKE " & "'" & "%SPLIT_LOAN%" & "')" & " AND" & _
    " ([Scenario] = " & "'" & "BASE" & "')" & _
    "ORDER BY [Date] ASC; "
4

1 に答える 1

0

選択は

select ID, max(datefield) 
from table 
group by ID 

選択が必要なだけですか、それとも古いエントリを実際に削除したいですか?

WITH TableTop AS
(
    SELECT ID, User, OrderDate
    ROW_NUMBER() OVER (ID BY OrderDate DESC) AS RowNumber
    FROM Table
) 
SELECT ID, User, OrderDate  
FROM TableTop 
WHERE RowNumber = 1;
于 2013-06-26T17:11:09.157 に答える