在 SQL 中使用條件過濾計算 Sum
在處理大型 SQL 語句時,經常需要計算匯總值。然而,有時需要根據特定條件僅考慮資料的子集。本文探討如何修改現有報表以計算唯一交易 ID 的現金價值總和,但僅限於起息日期在上個月內的交易 ID。
問題:
要計算複雜SQL 語句中每個交易ID 的總現金,以下程式碼是使用:
select sum(cash) from Table a where a.branch = p.branch and a.transID = p.transID) TotalCash
但是,目的是修改此語句,僅將起息日期在上個月內的現金價值相加。
解:
修改後的程式碼應將原始CASE 運算式替換為以下:
SUM(CASE WHEN ValueDate > @startMonthDate THEN cash ELSE 0 END)
說明:說明:
CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
在修訂後的程式碼中,CASE 表達式檢查 ValueDate 是否大於 @startMonthDate。如果是,則現金金額包含在計算中;否則,將替換為 0。這確保僅考慮上個月內的現金價值。
效能注意事項:如果效能成為問題,則建議考慮使用 JOIN 和 GROUP BY 而不是依賴子查詢。這可能會提高語句的執行速度。以上是如何用SQL計算最近一個月內的現金價值總和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!