我有以下查询,但我被卡住了,不确定下一步该如何处理我们的博物馆管理应用程序。
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
是“现金,mo或支票”,我想按p.created_at
和pd.amount
的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
这是可能的吗?或者有人建议我去哪里看?
2条答案
按热度按时间8yparm6h1#
图案:
os8fio9y2#
带有示例数据的表结构将有助于理解问题。CASE语句必须作为Group子句的一部分。