使用条件起息日计算总和
在 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中文网其他相关文章!