gpt4 book ai didi

SQL 条件求和

转载 作者:行者123 更新时间:2023-12-03 05:43:55 29 4
gpt4 key购买 nike

我目前有一个大型 SQL 语句,我将以下行添加到其中,以便获取每个交易 ID 的总现金(这是唯一的):

select sum(cash) from Table a where a.branch = p.branch 
and a.transID = p.transID) TotalCash

我现在需要做同样的事情,但只计算上个月内有起息日期的现金值(value)的总和,所以我有这样的东西:

select sum(CASE ValueDate WHEN > @startMonthDate THEN cash ELSE NULL END) 
from Table a where a.branch = p.branch and a.transID = p.transID) TotalMonthCash

抱歉,我没有完整的语句,但它确实很长并且特定于存储过程的上下文,但希望有人能知道我的意思?

最佳答案

试试这个:

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

说明

您的 CASE 表达式的语法不正确。您似乎将简单的 CASE 表达式语法与搜索的 CASE 表达式语法混淆了。请参阅documentation for CASE :

The CASE expression has two formats:

  • The simple CASE expression compares an expression to a set of simple expressions to determine the result.
  • The searched CASE expression evaluates a set of Boolean expressions to determine the result.

您想要搜索的 CASE 表达式语法:

CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
<小时/>

顺便说一句,如果性能是一个问题,您可能会发现,如果您使用 JOIN 和 GROUP BY 重写而不是使用依赖子查询,则该表达式运行得更快。

关于SQL 条件求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4517681/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com