2016-12-06 5 views
0

SQL Serverに出力テーブルを表示するスクリプトを作成します。私は、所望の出力を表示するSQLスクリプトをしたいテーブル内の特定のフィールドから最後の値を選択してください

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 

入力テーブル

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 

出力は次のようにする必要があります。

+2

は、おそらく、所望の結果の最後の行は "C" としない "D" であるべきです。 –

+1

あなたは何の後ろに**論理**とは何ですか? **説明してください** - 私たちに推測を残すだけではありません.... –

答えて

4

標準的な方法はrow_number()を使用することである:CTEを使用

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

;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

ありがとう...その仕事は完璧です –

関連する問題