我有2个表,import openpyxl
wb = openpyxl.load_workbook('C:\\Names.xlsx')
ws = wb['Sheet1']
cells = []
for row in ws:
A, B = row[:2]
cells.append([A.value, B.value]) # capture the first two cells
和User
。
表 - UserAccess
:
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
:
UserAccess
将有许多USER_ACCESS_ID USER_ID
10 1
11 2
12 3
13 6
14 7
条记录,包含或不包含Users
条记录。 UserAccess
是User_ID
表中的PK和User
表中的FK。
我必须编写一个通用查询来为每个客户端返回一个用户记录,而不是同一个客户端有多个用户记录。
选择最早UserAccess
的{{1}},如果有相应User
的记录,则会在没有Start_Date
记录的情况下将其视为胜者。
查询应该只返回UserAccess
表中的2条记录
UserAccess
User
记录Start_Date
但没有UserAccess
记录,因此应该选择用户#7,因为它具有最早的用户访问记录。希望我能够解释。
提前致谢。
此致
同盟
答案 0 :(得分:0)
该查询是否适合您?
;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;