我正在寻找一种方法来确定员工是否直接为客户解决了问题。当员工需要在7天内返回时,问题仍未解决。
情况:
数据集看起来像这样,我伪造了结果:
Customer Date Employee Outcome_Fixed
1 1-8-2018 1 1
2 2-8-2018 4 0
2 8-8-2018 3 0
2 11-8-2018 4 0
3 3-8-2018 8 0
3 5-8-2018 7 1
4 6-8-2018 3 1
我需要计算最后一栏。根据客户,员工和日期差异在7天或以上。谁知道如何解决这个问题?一直试图使用领先和滞后,但由于访问量未知,这种情况很糟糕。
谢谢!
CASE WHEN EXISTS
是这样做的一种方式:
SELECT Customer,
[Date],
Employee,
CASE WHEN EXISTS (SELECT *
FROM yourTable T2
WHERE T.[Date] < T2.[Date]
AND DATEDIFF(DAY, T.[Date], T2.[Date]) < 8
AND T.Customer = T2.Customer)
THEN 0
WHEN EXISTS (SELECT *
FROM yourTable T2
WHERE T.Employee = T2.Employee
AND T.Customer = T2.Customer
AND T.[Date] <> T2.[Date])
THEN 0
ELSE 1
END Outcome_Fixed
FROM yourTable T
首先检查是否有人在接下来的7天内访问过同一个客户。如果是这样的0
,否则1
。然后检查以确保同一员工之前没有失败。我相信这涵盖了你所有的条件。