SQL确定员工是否回答了客户问题
我正在寻找一种方法来确定员工是否直接为客户解决了问题。当员工需要在7天内返回时,问题没有得到解决 情况: 问题马上就解决了。因此,这是一个积极的分数。 另一名员工已尝试修复,但失败。为此 员工仍在计算,他立即修复了它。 该员工已返回客户并修复了问题。因为他以前失败过,所以没有得分。 该员工已经拜访了客户,但一位同事不得不拜访以最终修复。因此没有得分。 数据集如下所示,我伪造了结果:SQL确定员工是否回答了客户问题,sql,sql-server,lag,lead,Sql,Sql Server,Lag,Lead,我正在寻找一种方法来确定员工是否直接为客户解决了问题。当员工需要在7天内返回时,问题没有得到解决 情况: 问题马上就解决了。因此,这是一个积极的分数。 另一名员工已尝试修复,但失败。为此 员工仍在计算,他立即修复了它。 该员工已返回客户并修复了问题。因为他以前失败过,所以没有得分。 该员工已经拜访了客户,但一位同事不得不拜访以最终修复。因此没有得分。 数据集如下所示,我伪造了结果: Customer Date Employee Outcome_Fixed 1
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天内或7天以上的客户、员工和日期差异。有人知道如何解决这个问题吗?
一直在尝试使用超前和滞后,但由于访问量未知,因此失败了
谢谢 存在时的情况是一种方法:
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。然后检查以确保同一名员工以前没有失败。我相信这涵盖了您的所有情况。您使用的是什么版本的SQL server?