【发布时间】:2018-07-01 10:22:31
【问题描述】:
经过多次尝试,我无法修复此左连接查询。我的查询返回的 debit_amount 与实际不同,而我的实际 debit_amount 小于两个月的给定值。
我的问题是为什么我的左连接值与实际值不匹配,以及如何解决此问题以获得实际值。
我的完整查询和结果如下所示。
SELECT
MONTHNAME(cc.credit_date) as month,
IFNULL(SUM(cc.credit_amount),0) AS credit,
IFNULL(SUM(cd.debit_amount),0) AS debit_amount,
MONTHNAME(cd.debit_date) AS month
FROM
cust_credit AS cc
LEFT JOIN
(SELECT
((cd.debit_date)),
IFNULL(SUM(cd.debit_amount), 0) AS debit_amount
FROM
cust_debit AS cd
GROUP BY
MONTHNAME(cd.debit_date)) cd ON ((MONTHNAME(cd.debit_date)) = MONTHNAME(cc.credit_date))
GROUP BY
MONTHNAME(cc.credit_date)
屏幕截图中该查询的结果:
如果我只运行join 来检查。查询是
SELECT (MONTHNAME(cd.debit_date)) , IFNULL(SUM(cd.debit_amount),0) AS debit_amount FROM cust_debit AS cd GROUP BY MONTHNAME(cd.debit_date )
查询结果:
[
信用表
借记表
【问题讨论】:
-
你的问题是什么?
-
感谢您的宝贵时间,我的问题是为什么我的
left join值与实际不匹配,我该如何解决这个问题? -
见:Why should I provide an MCVE for what seems to me to be a very simple SQL query?。顺便说一句,这并不重要,但 COALESCE() 符合 ANSI 标准。
-
请use text, not images/links, for text (including code, tables & ERDs)。使用图像仅是为了方便补充文本和/或无法在文本中给出的内容。如果您有代表,请将此类图片内嵌,而不是作为链接 - 让您的帖子独立。