sql - SQL聚合查询重复主键列
问题描述
我正在查询两个数据库表,Invoice
并且Payments
. 我想获取特定发票的所有付款的总和,但是结果“重复”发票编号而不是汇总值。
这些表是
发票
invoiceID
dueDate
invoiceAmount
付款
paymentID
invoiceID
fine
amount
这是我的查询:
SELECT
Invoices.invoiceID, invoiceAmount,
COALESCE((SUM (fine + amount)), 0) AS 'Total'
FROM
Payments, Invoices
WHERE
Payments.invoiceID = Invoices.invoiceID
GROUP BY
Invoices.invoiceID, dueDate, datePaid, invoiceAmount
ORDER BY
Invoices.invoiceID
结果是这样的
invoiceID invoiceAmount Total
---------------------------------
2 270000 170000
2 270000 100000
67 400000 150000
67 400000 250000
我希望输出是
invoiceID invoiceAmount Total
----------------------------------
2 270000 270000
67 400000 400000
解决方案
我怀疑您真的想要left join
捕获没有付款的发票:
SELECT i.invoiceID, i.invoiceAmount,
SUM(COALESCE(fine, 0) + COALESCE(amount, 0)) as Total
FROM Invoices i LEFT JOIN
Payments p
ON p.invoiceID = i.invoiceID
GROUP BY i.invoiceID, i.invoiceAmount
ORDER BY i.invoiceID;
请注意,COALESCE()
用于每列。如果其中一个值是NULL
,那么这可能符合您的意图。
推荐阅读
- amazon-web-services - API Gateway 自定义标头不会持续存在
- express - 我的嵌套文档不显示,猫鼬,快递
- python - python中最近的时间戳
- python - 如何更改选择器以使网站显示登录而不是使用 selenium python 和 chromedriver 进行注册?
- react-native - 如何在反应本机抽屉中禁用或删除或隐藏项目选定空间
- html - 如何访问 Handlebars 中嵌套循环内的数据?
- sharepoint - SharePoint 新式页面无法正确加载
- azure - 为什么在 Azure 中尝试通过 ARM-Template 创建 VM 时会触发错误“不是有效的资源引用。(代码:InvalidParameter)”?
- reactjs - React Native Redux - 为什么我不能访问我的 redux 存储中的数据并显示它?
- flutter - 上下文不包含块