在连接中使用 distinct

Using distinct in a join

我在 SQL 还是个新手,我需要 运行 一份包含 3 个 table 的报告。第三个 table 有我需要的重复字段。所以我尝试加入一个不同的选项,但帽子不起作用。谁能建议我可以使用的正确代码?

我的代码如下所示:

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)

请问有人能帮忙吗?我将不胜感激。

提前致谢。

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

以上将为您 return 客户代码、销售员代码和收入金额总和的任何不同组合,其中 c.CustomerCode 与 mc.customer_code 相匹配并且相同mc 记录匹配一个 ms.salesman_code 并且那个 ms 记录有一个 '00' 的 comp_code 并且 Revenue_Date 在从和到变量 之间。然后,将整个结果按客户代码和业务员姓名进行分组;唯一会导致出现重复项的是 SUM(revenue) 是否有所不同。

解释一下,如果您只是直接进行 JOIN,则不需要 JOIN 关键字。我发现它会使事情变得复杂;只有在进行 "odd" 连接时才需要它们,例如 LEFT/RIGHT 连接。我不知道你的数据模型,所以上面的 MIGHT 仍然 return 重复,但如果是这样,请告诉我。