带有where子句的M​​AX Date

kli*_*ima 1 sql sql-server sql-server-2012

我有以下查询:

SELECT
    cst_recno as [Member ID],
    cmc_end_date as 'Last Term End date as a Trustee',
    ind_first_name as 'Last Name',
    ind_mid_name as 'First Name',
    ind_last_name as 'Last Name',
    cst_ixo_title_dn as 'title',
    cst_org_name_dn as 'organization',
    adr_country as 'Country',
    adr_city as 'City',
    adr_state as 'State',
    cst_eml_address_dn as 'Email'
FROM mb_committee_x_customer  
JOIN co_customer ON cst_key=cmc_cst_key 
JOIN mb_committee ON cmt_key=cmc_cmt_key 
JOIN co_individual ON ind_cst_key=cmc_cst_key 
LEFT JOIN co_customer_x_address ON cmc_cxa_key=cxa_key 
LEFT JOIN co_address ON cxa_adr_key = adr_key 
WHERE cmc_end_date <= '9/6/2017' 
AND ind_deceased_flag != 1 
AND cmt_code = N'T'
ORDER BY cst_recno
Run Code Online (Sandbox Code Playgroud)

返回此示例数据:

MemberID    Last Term End Date as a Trustee         Last Name
1004        2003-06-30                              Smith
1004        2005-06-30                              Smith
1004        2006-06-30                              Smith
1004        2008-06-30                              Smith
1004        2007-06-30                              Smith
Run Code Online (Sandbox Code Playgroud)

我想获得每个成员ID的最早日期,所以我的结果集如下所示:

MemberID    Last Term End Date as a Trustee         Last Name
1004        2008-06-30                              Smith
Run Code Online (Sandbox Code Playgroud)

sag*_*agi 5

使用ROW_NUMBER()来识别最新记录每个memberID:

SELECT t.* 
FROM(SELECT ROW_NUMBER() OVER(PARTITION BY s.memberID ORDER BY cmc_end_date DESC) as rnk,
            cst_recno as [Member ID],
            cmc_end_date as 'Last Term End date as a Trustee',
            ind_first_name as 'Last Name',
            ind_mid_name as 'First Name',
            ind_last_name as 'Last Name',
            cst_ixo_title_dn as 'title',
            cst_org_name_dn as 'organization',
            adr_country as 'Country',
            adr_city as 'City',
            adr_state as 'State',
            cst_eml_address_dn as 'Email'
     FROM mb_committee_x_customer  
     JOIN co_customer ON cst_key=cmc_cst_key 
     JOIN mb_committee ON cmt_key=cmc_cmt_key 
     JOIN co_individual ON ind_cst_key=cmc_cst_key 
     LEFT JOIN co_customer_x_address ON cmc_cxa_key=cxa_key 
     LEFT JOIN co_address ON cxa_adr_key = adr_key 
     WHERE cmc_end_date <= '9/6/2017' AND ind_deceased_flag != 1 AND cmt_code = N'T') t
WHERE t.rnk = 1
Run Code Online (Sandbox Code Playgroud)