计算每个客户的最大值

时间:2016-05-06 11:16:04

标签: sql database sql-server-2005 data-manipulation

我有一个帮助台系统的数据集我正在构建报告,我需要能够计算每个客户的最大联系尝试次数。客户可以在任何给定时间打开多张票。

这是我目前使用的代码

  select *
  from reporting
  order by Job_id, seq_id, REason
SEQ_ID  job_id      EVENT_Name      reason                     account_number    
1       70449       Created                                     10341307
2       70449       Available                                   10341307
3       70449       Allocated                                   10341307
4       70449       Rescheduled     Failed Contact - Attempt 1  10341307

以上是示例输出。

失败的联系人尝试最多可以发生三次,每次尝试次数都会增加。因此,如果客户有一个失败的联系人 - 尝试3我只想计算那次尝试,没有任何进展。

我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

如果您只想保留最近的“失败联系人”(如果有的话),那么您可以使用row_number()

select r.*
from (select r.*,
             row_number() over (partition by (case when reason like 'Failed Contact%' then 1 else 2 end)
                                order by seq_id desc
                               ) as seqnum
      from reporting r
     ) r
where seqnum = 1 or reason not like 'Failed Contact%'
order by Job_id, seq_id, Reason;