2016-10-15 3 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)를 얻는 방법으로 MAX 또는 하위 쿼리를 계속 사용하지만, 원하지 않기 때문에 서브 쿼리를 넣을 위치를 찾지 못했다. 모든 SELECT는 그것을 사용합니다. 그리고 그것이 실제로 최상의 솔루션이라면. 아, 그리고이 테이블의 ID는 해시 값처럼 보이므로 MAX가 작동하는지 여부는 알 수 없습니다. 르 한숨.

가 여기에 SELECT의 단지 일부, 경우에 도움이 :

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

내가 충분한 정보를 준 희망, 어떤 방향/조언을 많이 주시면 감사하겠습니다!

감사합니다.

답변

0

select 맨 위 | 백분율로 선택 시작부터

관련 문제