一个sql菜鸟,在表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
但这显示了 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
条件later.PhoneNumber is null
说不能有后面的一行。如果有多行具有相同的 StartTime,这将选择所有行。
这允许您选择最新调用中的所有列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)