2016-10-15 23 views
0

我正在创建一个销售渠道报告,在该报告中,我为每个销售人员每周捕获获利和损失。如何将结果集限制为JOIN中的最新实例

该报告适用于大多数情况,除了这个让我感到不安的角落案例。这通常不会发生,但是如果销售人员将机会转移到赢取状态,然后又回到亏损状态,然后再次变为赢取状态 - 则它将计为2胜。我正在寻找一些方法,只从审计(明细)表中获取最新的行,其中(a)日期在上周内,(b)after_value是损失或赢或损值。

我曾试图这样做尽可能的加入,就像这样:

  FROM 
      opportunities o ON ao.opportunity_id=o.id 
      LEFT JOIN opportunities_audit oa ON o.id=oa.parent_id 
       AND after_value_string IN ('Loss', 'Win') 
       AND date_created > date_sub(now(), INTERVAL 1 WEEK) 
      INNER JOIN sweet.users u ON o.assigned_user_id=u.id 

,但我还没有找到一种方法,使用在加入类似MAX(ID)。我也在SELECT中尝试了一个MAX(id),但是我有几个sum(IF)语句,我不认为必须为每个总和(IF)做它是有意义的 - 加上我无法弄清楚无论如何,如何让它只适用于其中的一种。

我继续去MAX,或者可能是一个子查询来加入表本身,并获得最大(ID)的方式,但我只是没有想出在哪里把子查询,因为我不想每个SELECT都使用它。如果这实际上甚至是最好的解决方案。哦,而且,这些表中的id看起来像散列值,所以我不知道MAX是否会工作。勒叹。

这里的仅仅是选择的一部分,在情况下,它可以帮助:

, sum(IF(o.sales_stage = 'Win' 
     AND (o.date_modified > date_sub(now(), INTERVAL 1 WEEK)) 
      , 1,0)) 
     AS 'W' 

我希望我已经给了足够的信息,任何方向/建议,将不胜感激!

谢谢!

回答

0

选择顶部数字|从开头的百分比

相关问题