2016-12-06 70 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

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

相关问题