【发布时间】:2021-10-09 10:58:48
【问题描述】:
如果我再次问这个问题,我很抱歉。我已经尝试了所有可能的解决方案,但没有提出解决方案。 我还在这里附上了一个 sqlfiddle link to the problem来复制问题。
我有两个表:Contracts 和 Contracts_balance
对于我正在编写查询的每个表: 对于合约,使用此查询总结 ord_qty 列并按(product_name、pack_size 和 startr_date)分组:
SELECT c.contract_id, c.product_name, c.pack_size, sum(c.qty), c.contract_prod, c.end_date,c.start_date
From contracts c
GROUP BY c.product_name,c.start_Date , c.pack_size
输出如下所示:
对于contracts_balance,使用此查询对 balance_aftermonths 列求和并按(product_name、pack_size 和 startr_date)分组:
SELECT cb.contract_id_fk, cb.product_name, cb.pack_size, cb.monthlydates , SUM(cb.balance_aftermonth) as mysum
FROM contracts_balance cb
WHERE MONTH(cb.monthlydates) = 3
GROUP BY cb.product_name, cb.start_Date , cb.pack_size ;
输出如下所示: table contracts_balance
我正在尝试组合这两个查询,因此输出如下所示:
我的问题解决方法:正如在 sqlfddle 中所写,我正在使用 join 对列求和,但它显示了错误的结果
SELECT c.contract_id, c.product_name, c.pack_size, sum(c.qty), c.contract_prod, c.end_date,c.start_date, test.mysum,test.monthlydates
From contracts c
JOIN
( SELECT cb.contract_id_fk, cb.product_name, cb.pack_size, cb.member, cb.monthlydates , SUM(cb.balance_aftermonth) as mysum
FROM contracts_balance cb
WHERE MONTH(cb.monthlydates) = 3
GROUP BY cb.product_name, cb.start_Date , cb.pack_size
) test on (test.contract_id_fk = c.contract_id)
GROUP BY c.product_name,c.start_Date , c.pack_size
【问题讨论】:
-
嗨@KhalidTeli,请在您的加入条件中添加product_name 和pack_size。
标签: mysql join subquery union distinct