2016-12-06 126 views
0

我想在SQL Server中編寫一個腳本來顯示輸出表。從表中的特定字段中選擇最後一個值

輸入表

Name CompanyName ContractCode ContractEndDate 
---------------------------------------------------- 
A  B&D    A1   2016 08 31 
B  B&D    B1   2016 09 01 
B  B&D    C1   2016 09 02 
B  B&D    D1   2016 09 03 
C  B&D    E1   2016 09 04 
C  B&D    F1   2016 09 05 
C  B&D    G1   2016 09 06 
C  B&D    H1   2016 09 07 

輸出應該是這樣的:

Name CompanyName ContractCode ContractEndDate 
------------------------------------------------------ 
A  B&D    A1   2016 08 31 
B  B&D    D1   2016 09 03 
D  B&D    H1   2016 09 07 

我想顯示所需的輸出的SQL腳本。

+2

據推測在所期望的結果的最後一行應該是 「C」 而不是 「d」。 –

+1

什麼是你想要的背後的**邏輯**?請**解釋** - 不要只是讓我們猜測.... –

回答

4

的標準方法是使用row_number()

select Name, CompanyName, ContractCode, ContractEndDate 
from (select t.*, 
      row_number() over (partition by Name order by ContractEndDate desc) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
+0

謝謝...它不錯:) :) –

0

使用CTE

;WITH CTE 
AS (
    SELECT *, 
      ROW_NUMBER() OVER (PARTITION BY Name ORDER BY ContractEndDate DESC) AS RN 
    FROM Inputtable 
    ) 

SELECT Name, CompanyName, ContractCode, ContractEndDate 
FROM CTE 
WHERE RN=1 
+0

謝謝...它的工作完美 –

相關問題