[英]Assistance with MySQL Advanced SUM and GroupBy Month Case
我有以下查询,但我被卡住了,不确定我们博物馆的管理应用程序接下来要去哪里 go。
SELECT name,
account_number,
CASE
WHEN p.method = 'cash'
OR p.method = 'mo'
OR p.method = 'check'
THEN
MONTH(p.created_at)
ELSE
MONTH(p2.created_at)
END
FROM cemetery_charge_types
LEFT JOIN invoices i on cemetery_charge_types.id = i.charge_type_id
LEFT JOIN payment_details pd on i.id = pd.payable_id
LEFT JOIN payments p on pd.payment_id = p.id
LEFT JOIN payouts p2 on p.payout_id = p2.id
BETWEEN '2022-06-01 00:00:00' AND '2022-06-30 00:00:00'
WHERE cemetery_charge_types.category = 'Court'
GROUP BY account_number
ORDER BY account_number
如果p
(付款) method
是“现金、现金或支票”,我想按pd.amount
的月份和p.created_at
的 SUM 分组。
但是如果p
(支付) method
是“卡或终端”,我想按p2.created_at
的月份分组。
我仍然希望它按account_number
分组,并将两组的总和相加。
因此,如果现金、支票或 mo 方法在第 6 个月总共有 100 美元,在第 7 个月总共有 0 美元。如果卡和终端方法在第 6 个月总共有 50 美元,在第 7 个月总共有 75 美元,我会希望它看起来像:
ACCT # MONTH 6 MONTH 7
Account 1 $150 $75
这完全有可能吗,或者有人对我可以在哪里看有任何建议吗?
太感谢了
图案:
SELECT {common columns},
CASE WHEN {condition 1} THEN {expression 1}
WHEN {condition 2} THEN {expression 2}
END AS grouping_expression,
SUM( CASE WHEN {condition 1} THEN {value 1}
WHEN {condition 2} THEN {value 2}
END ) AS result_expression
FROM {tableset}
GROUP BY {common columns},
grouping_expression
带有样本数据的表结构将有助于理解问题。 该 CASE 语句必须 go 作为 Group 子句的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.