mysql - 是否可以在 SQL 中为以下查询添加带有 SUM 和 GROUP BY 的 JOIN 查询?
问题描述
我可以在一个名为“incomes”的表中使用以下查询读取“cust_id”及其应付款,但我在另一个名为 customer 的表中有名称和地址 - 我需要在查询中添加 - 是否可以添加 JOIN 查询下列的?如何?
SELECT cust_id, SUM(inc_text)- (SUM(inc_amount)-
SUM(
case
when inctype_id =11 then 0
else inc_amount
end
)) Total_due_left FROM incomes
GROUP BY cust_id;
解决方案
这应该有效:
SELECT c.*,
( SUM(i.inc_text) - (SUM(i.inc_amount) - SUM(CASE WHEN i.inctype_id = 11 then 0 ELSE inc_amount END))
) as Total_due_left
FROM incomes i JOIN
customers c
ON c.cust_id = i.cust_id
GROUP BY c.cust_id;
假设它customers.cust_id
是unique
. 否则,您需要在andcustomers
中明确列出列。SELECT
GROUP BY
看起来这也可以简化为:
SELECT c.*,
( SUM(i.inc_text) - SUM(CASE WHEN i.inctype_id = 11 THEN inc_amount ELSE 0 END)
) as Total_due_left
FROM incomes i JOIN
customers c
ON c.cust_id = i.cust_id
GROUP BY c.cust_id;
推荐阅读
- java - 使用 JPA 和 Hibernate (NotNull) 映射集合的最新子项
- alignment - SwiftUI 自定义对齐方式推动视图比父视图更宽
- python - 如何修剪 JSON 数组以获取特定值
- c - 使用函数构建结构
- javascript - 我可以在 JS 对象中设置文本样式吗?
- loops - 将多行 awk 命令放在 for 循环中不打印变量
- javascript - Intl.NumberFormat 不会转换为 pt-BR 语言环境
- google-analytics - GTM 回调多次触发
- c++ - 为什么基类的成员不保留它在构造函数中首次初始化的值?
- javascript - 意外的标记 '*' 在函数的参数列表之前需要一个开头的 '('