簡體   English   中英

協助 MySQL 高級 SUM 和 GroupBy Month 案例

[英]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.

 
粵ICP備18138465號  © 2020-2025 STACKOOM.COM