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

问题描述 投票:1回答: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天或以上。谁知道如何解决这个问题?一直试图使用领先和滞后,但由于访问量未知,这种情况很糟糕。

谢谢!

sql sql-server lag lead
1个回答
1
投票

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。然后检查以确保同一员工之前没有失败。我相信这涵盖了你所有的条件。

© www.soinside.com 2019 - 2024. All rights reserved.