Мне нужно написать запрос, который назначит повторное обслуживание, а затем вести подсчет для каждого техника - PullRequest
1 голос
/ 26 августа 2011

У меня есть таблица, содержащая мои заказы на обслуживание, и для заказов на обслуживание может быть много проблем с обслуживанием. Мне нужен запрос, который получит результаты следующим образом: Джо решил исправить проблему и открыл номер заказа на обслуживание 1. Проблема не была решена, клиент перезвонил. Теперь Боб решает проблему, которую Джо не решил. Из этого Джо пристыкован повторный сервис. Джо имеет 1 повтор. На следующий день клиент перезванивает: проблема не решена, и Джо решает проблему. Теперь Боб пристыкован к повторению. У Боба есть 1 повтор. Проблема не была решена, и Джо отправляется, чтобы исправить проблему снова. Джо пристыкован еще раз. Теперь у Джо есть 2 повторения. Проблема все еще не решена, и Боб выходит, чтобы решить проблему. Джо пристыкован еще раз. Теперь у Джо 3 повторения. Проблема все еще не решена, и Боба снова отправляют, чтобы решить проблему. Боб пристыкован повторить. Теперь у Боба 2 повторения, а у Джо 3 повторения для одного и того же заказа на обслуживание.

Мне нужны идеи о том, как написать запрос такого типа. Ниже приведен образец таблицы:

Serv_Trouble    TechID  Tech    ServOrder
ab51            1       joe     1
ccd2            2       bob     1
abd3            1       joe     1
tto4            1       joe     1
mmo5            2       bob     1
abo6            2       bob     1
lll7            1       joe     1
aco8            1       joe     2
dab9            1       joe     2
tof10           2       bob     2
ab11            2       bob     2
cc12            3       larry   2
ab13            2       bob     2

Любая помощь будет очень, и я имею в виду очень ценится. Я искал на большинстве сайтов SQL идеи, но, похоже, что-то вроде этого не решается.

1 Ответ

0 голосов
/ 26 августа 2011

Похоже, вы ищете GROUP BY.

SELECT
  s.ServOrder
 ,s.TechID
 ,s.Tech
 ,COUNT(*) as repeats
FROM ServOrders s
  INNER JOIN (
    SELECT
      ServOrder
     ,MAX(Serv_Trouble) AS MaxTrouble
    FROM ServOrders
    GROUP BY ServOrder
  ) m ON s.ServOrder = m.ServOrder
     AND s.Serv_Trouble < m.MaxTrouble
GROUP BY s.ServOrder, s.TechID, s.Tech
ORDER BY s.ServOrder, s.TechID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...