Wil*_*ill 1 sql join distinct distinct-values
sql noob的位,在客户代码/电话号码的表a中有一个列表,而表b包含所有的呼叫记录.
我想从表b中为表a中的每个客户代码/电话号码选择最近的呼叫.
到目前为止,我有:
SELECT A.CustomerCode, A.PhoneNumber, B.StartTime
FROM tableA A INNER JOIN
tableB B ON ( A.PhoneNumber = B.PhoneNumber
AND A.CustomerCode = B.CustomerCode )
ORDER BY A.CustomerCode, A.CLI, B.StartTime DESC
Run Code Online (Sandbox Code Playgroud)
但这会带来TableB的所有结果.我真的只想得到最近的电话,如果这有意义吗?
您可以自己加入调用表,并指定不存在以后的行.喜欢:
SELECT A.CustomerCode, A.PhoneNumber, B.StartTime
FROM tableA A
INNER JOIN tableB B
ON A.PhoneNumber = B.PhoneNumber
AND A.CustomerCode = B.CustomerCode
LEFT JOIN tableB later
ON B.PhoneNumber = later.PhoneNumber
AND B.CustomerCode = later.CustomerCode
AND later.StartTime > B.StartTime
WHERE later.PhoneNumber is null
Run Code Online (Sandbox Code Playgroud)
条件later.PhoneNumber is null说不能有后一行.如果有多个行具有相同的StartTime,则会选择所有行.
这允许您从最新的呼叫中选择所有列.