首頁 >資料庫 >mysql教程 >如何在SQL中根據起息日按交易ID高效求和現金值?

如何在SQL中根據起息日按交易ID高效求和現金值?

Linda Hamilton
Linda Hamilton原創
2024-12-16 11:14:10444瀏覽

How to Efficiently Sum Cash Values by Transaction ID Based on Value Date in SQL?

使用條件起息日計算總和

在SQL 語句中,您想要計算過去每個唯一交易ID 的現金總額月。為了實現這一點,您需要修改現有的語句以包含這樣的條件:僅應包含起息日在特定日期之後的現金價值。

為了解決這個問題,您嘗試使用 CASE 語句,但由於語法不正確,遇到錯誤。

搜尋到的CASE 表達式的正確語法為:

CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

表達式應修改為如下所示:

SUM(CASE WHEN ValueDate > @startMonthDate THEN cash ELSE 0 END)

此表達式計算每條記錄的ValueDate 欄位。如果ValueDate大於指定的開始月份日期,則傳回現金值;否則,傳回 0。然後對結果值進行求和以提供指定期間的總現金。

替代方法

為了提高性能,請考慮使用JOIN 和GROUP BY 語句而不是依賴子查詢:

SELECT SUM(cash)
FROM Table_a AS a
JOIN Table_b AS b ON a.branch = b.branch AND a.transID = b.transID
WHERE ValueDate > @startMonthDate
GROUP BY a.transID

這種方法避免了與子查詢相關的開銷,並且可以加快執行速度時間。

以上是如何在SQL中根據起息日按交易ID高效求和現金值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn