聚合表中的数据 - SQL

Aggregate Data in Tables - TSQL

我有 2 个 table,UserUserAccess

Table - User:

USER_ID , Client_ID , Start_Date 
1          123        2015-06-30
2          123        2015-06-25
3          123        2015-06-20
5          888        2016-02-10
6          888        2016-02-15
7          888        2016-02-12

Table - UserAccess:

USER_ACCESS_ID  USER_ID  
     10            1          
     11            2          
     12            3
     13            6
     14            7          

会有很多Users条记录,有或没有UserAccess条记录。 User_IDUser table 中的 PK 和 UserAccess table 中的 FK。

我必须为每个客户 return 一个用户记录编写一个通用查询,而不是同一个客户有多个用户记录。

选择最早Start_DateUser,如果有对应UserAccess的记录,则认为胜过没有UserAccess的记录记录..

查询应该 return 只有来自 User table 的 2 条记录 as

希望我能解释清楚。

提前致谢。

此致

盟友

该查询对您有用吗?

;WITH Users as (
    SELECT u.*, a.USER_ACCESS_ID 
    , RANK() OVER(PARTITION BY Client_ID 
            ORDER BY CASE WHEN a.USER_ID is Null 
                    Then 1 ELSE 0 END, u.Start_Date) as ToPick
    FROM tbl_User as u
    LEFT JOIN tbl_UserAccess as a 
    ON u.USER_ID = a.USER_ID
)
SELECT USER_ID , Client_ID , Start_Date, USER_ACCESS_ID
FROM Users
WHERE ToPick = 1;