我在执行和计算列的和时遇到了问题,但是代码显示了错误的输出。我试着解决这个问题 GROUP BY
同样也是错误的输出结果。我相信这是数据库中存在的公共行的执行次数。
我以前从未真正面对过这个问题。请帮助我,我如何解决这个问题,什么应该是正确的sql在php
* Table CR_table*
ID | credit | components_key
----------------------------
1 | 400 | 202012162458
----------------------------
2 | 300 | 202012162458
* Table DR_table*
ID | req_debit | components_key
----------------------------
1 | 100 | 202012162458
----------------------------
SELECT DISTINCT SUM(credit)-SUM(req_debit) FROM CR_table LEFT JOIN DR_table ON CR_table.components_key = DR_table.components_key WHERE DR_table.transaction_type = 'OA' AND CR_table.components_key = '202012162458' GROUP BY CR_table.components_key
输出=500(但输出应为600)
期初余额
SELECT SUM(AMT) as OpeningBalance (SUM(CASE WHEN DR.insert_date < '2020-12-29' THEN CR.credit - DR.debit ELSE 0 END) FROM CR_table CR WHERE CR.components_key = '202012162458'
UNION ALL SELECT -req_debit AMT FROM DR_table DR WHERE DR.transaction_type = 'OA' AND DR.components_key = '202012162458') t `but Opeing is also not working
`
1条答案
按热度按时间yrwegjxp1#
当您连接两个表时,它正在生成
2(credit)*1(debit) = 2 records
其中你有两个不同的信贷和一个单一的借方重复在两行,所以你得到500(400 + 300 - 100 - 100
)输出。你也可以使用
UNION ALL
具体如下: