【发布时间】:2018-01-24 11:25:43
【问题描述】:
多次尝试后,我无法从此查询获得所需的结果。
SELECT
cc.date as credi_date,
cd.date as debit_date,
cd.month AS month,
ROUND(IFNULL(cc.credit_amount,0),2) AS credit,
ROUND(IFNULL(cd.debit_amount,0),2) AS debit
FROM
(SELECT
DATE(cc.credit_date) as date,
MONTHNAME(cc.credit_date) as month,
IFNULL(SUM(cc.credit_amount),0) AS credit_amount
FROM
cust_credit cc
WHERE YEAR(cc.credit_date) = YEAR(NOW())
GROUP BY DATE(cc.credit_date)) cc
INNER JOIN
(SELECT
DATE(cd.debit_date) as date,
MONTHNAME(cd.debit_date) as month,
IFNULL(SUM(cd.debit_amount),0) AS debit_amount
FROM
cust_debit cd
WHERE YEAR(cd.debit_date) = YEAR(NOW())
GROUP BY DATE(cd.debit_date)) cd ON cc.month=cd.month
问题是这个查询重复了rows 多次。我不知道是什么导致了这种重复以及如何解决这个问题。结果的image如下所示。
我需要的结果是
我的信用表如下
我的借记表如下
【问题讨论】:
-
我不确定您是否真的需要使用子查询。您是否尝试过在 SELECT 之后放置一个 DISTINCT,直接使用 cust_credit 和 cust_debit 而不是子查询并将结果分组?还要检查您的 INNER JOIN 条件
-
为什么不使用 DISTINCT 子句?
-
@kiks73 不,我没有尝试过 DISTINCT,问题在于
ON子句。 -
@GarimaGupta 是更好的方法吗?
-
@GarimaGupta 面临同样的问题 ...