2016-06-30 2 views
0

저는 Salesforce에서 SQL을 처음 사용하고 있으며 쿼리에 몇 가지 문제가 있습니다. 각 사용자에 대해 마지막으로 판매 된 항목의 고객을 얻고 싶습니다. ("John의 마지막 판매는 고객 Jane에게").날짜 및 사용자를 기준으로 이름을 얻으십시오.

우리는 Opportunity 개체 주변에 모든 것을 구축했습니다. 기회 개체가 '닫힌 원'으로 표시되면 판매로 계산됩니다. 따라서 나의 접근 방식은 각 판매자에 대해 '최고'날짜가있는 오브젝트를 '닫힌 원'으로 표시하는 것입니다. 그 후, 나는 발견 한 날짜와 관련된 대상의 고객을 찾습니다. 그러나 작동하지 않습니다.

SELECT o1.CustomerName 
FROM Opportunity o1 
WHERE o1.CloseDate IN(
SELECT MAX(o2.CloseDate) 
FROM Opportunity o2 
WHERE o2.StageName = 'Closed Won' 
GROUP BY o2.UserId) 

내부 쿼리는 각 사용자에 대해 정확한 '마지막 종료 날짜'가있는 목록을 생성합니다. 크게 간소화 I가 가지고있는 테이블 :

Opportunity(CustomerName, StageName, CloseDate, UserId) 

User(UserId, UserName) 

사람이 올바른 쿼리에 대한 아이디어, 또는 더 나은 방법이 있습니까?

+0

상관 관계가있는 하위 쿼리를 원하는 것처럼 보입니다. 그것에 O1 조건을 포함 시키십시오! – jarlh

+0

WSDL을 사용하지 않는 한 Salesforce는 SQL을 사용하지 않습니다. SQL과 많이 다른 SOQL을 찾고 있습니까 – coder32

답변

0

상관 관계 하위 쿼리가 실제로 필요합니다. 문제는 날짜가 사용자와 관련이 없으므로 사용자의 모든 레코드입니다. 여기서 날짜는 의 모든 사용자가 일 때의 최대 날짜입니다.

여기에 다른 방법입니다 :

SELECT o1.CustomerName 
FROM Opportunity o1 
WHERE o1.CloseDate IN (SELECT MAX(o2.CloseDate) 
         FROM Opportunity o2 
         WHERE o2.StageName = 'Closed Won' 
          o1.UserId = o2.UserId 
        ); 

당신은뿐만 아니라 외부 쿼리에 StageName = 'Closed Won' 조건을 추가 할 수 있습니다.

+0

누락 및 하위 쿼리의 where 문에서 – Chris

관련 문제