我需要找出一周内有多少客户是新客户以及有多少是为员工返回的。
为了找出该员工上周有哪些客户,我查询:
SELECT DISTINCT ClientIdNumber FROM Transactions
WHERE [Date] >= @startDate AND [Date] <= @endDate
AND EmployeeIdNumber = @employeeIdNumber
要了解客户和员工之前是否有过互动,我可以查询:
IF (
SELECT COUNT(*) AS n FROM Transactions
WHERE [Date] < @startDate
AND ClientIdNumber = @clientIdNumber
AND EmployeeIdNumber = @employeeIdNumber
) > 0
SELECT 1
ELSE SELECT 0
我想将这些查询合并为一个,以便结果集如下所示:
EmployeeIdNumber - NewClients - ReturningClients
使用这两个单独的查询,我必须遍历第一个结果集并应用第二个结果集,这当然非常慢(而且很糟糕)
我无法理解它,因为我需要第二个查询中第一个查询的结果,但我确信有一个聪明的方法可以做到这一点。