我仍然是SQL的新手,我需要运行一个JOINs 3表的报告。第三个表有我需要的字段的副本。所以我尝试加入一个独特的选项,但帽子不起作用。任何人都可以建议我可以使用正确的代码吗?
SELECT
C.CUSTOMER_CODE
, MS.SALESMAN_NAME
, SUM(C.REVENUE_AMT)
FROM C_REVENUE_ANALYSIS C
JOIN M_CUSTOMER MC ON C.CUSTOMER_CODE = MC.CUSTOMER_CODE
/* This following JOIN is the issue. */
JOIN M_SALESMAN MS ON MC.SALESMAN_CODE = (SELECT SALESMAN_CODE FROM M_SALESMAN WHERE COMP_CODE = '00')
WHERE REVENUE_DATE >= :from_date
AND REVENUE_DATE <= :to_date
GROUP BY C.CUSTOMER_CODE, MS.SALESMAN_NAME
我还尝试了另一种变体来获得DISTINCT。
/* I also tried this variation to get a distinct */
JOIN M_SALESMAN MS ON MC.SALESMAN_CODE =
(SELECT distinct(SALESMAN_CODE) FROM M_SALESMAN)
请有人帮忙吗?我真的很感激。
提前致谢。
答案 0 :(得分:0)
select distinct
c.customer_code,
ms.salesman_code,
SUM(c.revenue_amt)
FROM
c_revenue c,
m_customer mc,
m_salesman ms
where
c.customer_code = mc.customer_code
AND mc.salesman_code = ms.salesman_code
AND ms.comp_code = '00'
AND Revenue_Date BETWEEN (from_date AND to_date)
group by
c.customer_code, ms.salesman_name
以上将返回客户代码,销售员代码和收入金额的任何明显组合,其中 c.CustomerCode与mc.customer_code匹配并且相同的mc记录与ms.salesman_code匹配并且ms记录具有comp_code为&#39; 00&#39;并且Revenue_Date位于from和to变量之间。然后,整个结果将按客户代码和销售员名称分组;唯一会导致重复出现的是SUM(收入)是否有所不同。
要解释一下,如果您只是直接加入,则不需要JOIN关键字。我发现它倾向于卷曲的东西;你只需要做一个&#34;奇怪的&#34;加入,就像LEFT / RIGHT加入一样。我不知道您的数据模型,所以上面的可能仍会返回重复项,但如果是这样,请告诉我。