使用SQL Server

时间:2016-06-18 21:26:05

标签: sql-server sql-server-2008

以下是表格Star中的数据。我想要一个查询,每个StarIDassessdate只返回1条记录,但如果assessdate只有starid,则比较askdate并返回该记录最近有askdate

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

提前致谢!

1 个答案:

答案 0 :(得分: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