2016-06-18 16 views
0

以下はテーブルStarのデータです。 ごとに1レコードしか返しませんが、assessdateが1つの場合はstaridとなり、askdateを比較して、最新のaskdateのレコードを返します。SQL Serverのcaseステートメントを使用した自己結合

StarID | assessdate    | artid | pep |manager   | Notes     | followup| askdate 
DEC1660 | 2016-05-18 00:00:00.000 | 20979 | Yes |BRIGGS, SIMON |NULL      | 6 Weeks | NULL 
DEC1660 | 2016-05-19 00:00:00.000 | 20982 | No |BRIGGS, SIMON |Other, sdf, AZT, TDF, RAL | 12 Weeks| 2016-05-11 00:00:00.000  
ANW4477 | 2016-05-27 00:00:00.000 |21008 | Yes |Mundt, Susan  |NFV, DRV, MVC, Other, test| 6 Weeks | 2016-05-27 00:00:00.000 
ANW4477 | 2016-05-28 00:00:00.000 |21011 | No |Henley, Rebecca |NULL      | 12 Weeks| NULL 
REP2893 | 2016-05-30 00:00:00.000 |21305 | Yes |Henley, Rebecca |AZT, 3TC     | 12 Weeks| 2016-05-30 00:00:00.000 
REP2893 | 2016-05-30 00:00:00.000 |21305 | Yes |Henley, Rebecca |TDF, FTC     | 12 Weeks| 2016-06-02 00:00:00.000 

ありがとうございます!

答えて

3
WITH X AS (
    Select * 
      , ROW_NUMBER() OVER (PARTITION BY StarID, assessdate 
           ORDER BY askdate DESC) rn 
    FROM Star) 
SELECT * 
FROM X 
WHERE rn = 1 
+0

完璧!ありがとうM.Ali。ダンヌン!!!私は質問のためにDESCを使用しなかったので、私にとってはうまくいかなかった。 – Sachin25

+0

@ Sachin25あなたのために働いた場合、受け入れられた回答としてマークしてください – Sam

関連する問題