테이블이 3 개 있어요. 첫 번째 테이블 'Status_Mapping'에는 다음 열이 있습니다.
Status_original Status_Site
accepted Call Verified
duplicate Duplicate Leads
dq DQ
'Lead_transaction'에는 다음 열이 있습니다.
Lead_transaction_id Rate Status
11 0.01 accepted
12 0.02 accepted
13 0.01 duplicate
'Lead_Instance'테이블 :
Lead_Instance_id Lead_transaction_id product_id affiliate_id
1 11 6 10
2 12 7 11
3 13 6 10
내가하고 싶은 것은 status_mapping 테이블을 반복하고 각 상태에 대한 count (lead_instance_id) 및 sum (rate)을 얻은 다음 product_id = 6 및 companion_id = 10 인 이전 테이블에서 사이트 상태를 가져 오는 것입니다. 내 최종 결과는 다음과 같아야합니다.
Total Sum Status
1 0.01 Call Verified
1 0.01 Duplicate Leads
0 0.00 DQ
SQL 시도
SELECT S.status_site AS [Status]
,COALESCE(count(L.lead_instance_id), 0) AS [Total Occurrences]
,COALESCE(SUM(L.Rate), 0) AS [Rate Sum]
,COALESCE(li.product_id, 0) AS [Product_id]
,COALESCE(li.afid, 0) AS [AFFILIATE_id]
FROM Status_Mapping S
LEFT OUTER JOIN lead_transactions L ON S.status_orignal = L.STATUS
LEFT OUTER JOIN lead_instance li ON li.lead_instance_id = L.lead_instance_id
WHERE li.product_id = 6
AND li.afid = 27
GROUP BY S.status_site
,li.product_id
,li.afid
select
count(lt.Lead_transaction_id) as Total,
coalesce(sum(lt.Rate), 0) as "Sum",
sm.Status_Site as "Status"
from
Status_Mapping sm
left outer join
(
select lt.Lead_transaction_id, lt.Status, lt.Rate
from
Lead_transaction lt inner join Lead_instance li
on li.Lead_transaction_id = lt.Lead_transaction_id
where
li.product_id = 6 and li.affiliate_id = 10
) lt
on lt.Status = sm.Status_original
group by sm.Status_Site
http://sqlfiddle.com/#!3/09c8b/1
여기서 중요한 부분은 먼저 내부 조인을 수행하여 결과를 원하는 제품 및 제휴사로 제한 한 다음 나중에 외부 조인을 사용하여 전체 상태 목록을 유지하는 것입니다. 이것은 때때로 중첩 대신 올바른 조인이 표시되는 경우입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다