查找在SQL表中实现特定结果所需的次数

时间:2016-04-01 10:33:58

标签: sql sql-server tsql

我需要找出从SQL表中获得结果所需的尝试次数。例如,我的表包含CustomerID,Outcome,OutcomeType。我正在寻找的结果是Sale

所以,如果我有这个记录:

CID   Outcome  OutcomeID   Date
1    No Answer     0       01/01/2015 08:00:00
1    No Interest   0       02/01/2015 09:00:00
1    Sale          1       02/02/2015 10:00:00
1    Follow up     2       03/02/2015 10:00:00

我可以看到它花了2次尝试才能进行销售。我需要为包含数千个条目的表中的所有客户执行此操作。他们可能在销售后有条目,我需要排除这些,他们也可能在第一次销售后有额外的销售,但我只对第一次销售感兴趣。

我希望这是足够的信息,

非常感谢提前

根据要求编辑,我想要的结果是:

CID   CountToOutcome
1         2  
2         3   
3         5

1 个答案:

答案 0 :(得分:0)

您可以使用窗口函数和聚合来执行此操作:

select cid,
       min(case when Outcome = 'Sale' then seqnum end) - 1 as AttemptsBeforeSale
from (select t.*,
             row_number() over (partition by cid order by date) as seqnum
      from t
     ) t
group by cid;

注意:这为每个cid首次促销提供了价值。