SQL确定员工是否回答了客户问题

SQL确定员工是否回答了客户问题,sql,sql-server,lag,lead,Sql,Sql Server,Lag,Lead,我正在寻找一种方法来确定员工是否直接为客户解决了问题。当员工需要在7天内返回时,问题没有得到解决 情况: 问题马上就解决了。因此,这是一个积极的分数。 另一名员工已尝试修复,但失败。为此 员工仍在计算,他立即修复了它。 该员工已返回客户并修复了问题。因为他以前失败过,所以没有得分。 该员工已经拜访了客户,但一位同事不得不拜访以最终修复。因此没有得分。 数据集如下所示,我伪造了结果: Customer Date Employee Outcome_Fixed 1

我正在寻找一种方法来确定员工是否直接为客户解决了问题。当员工需要在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天内或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?