在连接中使用 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 重复,但如果是这样,请告诉我。
我在 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 重复,但如果是这样,请告诉我。