我需要编写一个查询,分配一个重复服务,然后为每个技术人员保持计数

时间:2011-08-26 14:00:14

标签: sql sql-server-2008

我有一个包含我的服务订单的表,对于服务订单,可能会有很多服务问题。我需要一个查询,将结果作为folows:Joe去修复问题并打开服务订单号1.问题没有解决,客户回电。现在鲍勃去解决乔没有解决的问题。出于这个乔停靠了重复服务。乔有1次重复。第二天客户回电:问题未解决,乔出去解决问题。现在鲍勃重复了。鲍勃有1次重复。问题没有得到解决,Joe被派去再次解决问题。乔被停靠了另一个重复。现在乔有2次重复。问题仍未解决,鲍勃出去解决问题。乔被停靠了另一个重复。现在乔有3次重复。问题仍未解决,鲍勃再次被派出来解决问题。鲍勃停下来重复一遍。现在Bob有2次重复,Joe有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 :(得分:0)

听起来你可能正在寻找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