SQL определяет, ответил ли сотрудник на проблему клиента - PullRequest
0 голосов
/ 30 августа 2018

Я ищу способ определить, исправил ли сотрудник проблему непосредственно для клиента. Когда сотруднику необходимо вернуться в течение 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 дней. Кто-нибудь знает, как решить эту проблему? Я пытался использовать опережающие и запаздывающие данные, но, поскольку количество посещений неизвестно, это не помогло.

Спасибо!

1 Ответ

0 голосов
/ 30 августа 2018

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. Затем выполняется проверка, чтобы убедиться, что тот же сотрудник не потерпел неудачу раньше. Я считаю, что это охватывает все ваши условия.

...