【发布时间】:2016-04-12 20:03:29
【问题描述】:
我想知道是否有可能出现以下情况:
((CASE WHEN (a = 1 AND b = 1) OR c = 0 THEN xyz ELSE 0))
我可以看到很多带有 AND 但没有 OR 的 CASE。
还有一件事是这样的 SELECT 查询需要
Select x,y,z, SUM(( CASE WHEN .....))
从表中。
任何帮助将不胜感激
CREATE PROCEDURE abc
@sid int
AS
BEGIN
SELECT
Column1,
Column2,
Column3,
SUM((CASE WHEN ((a = 1 AND b != 0 ) OR (c = 720)) THEN Amount ELSE 0 END))
AS total
FROM view
WHERE sid = @sid
END
【问题讨论】:
-
为什么不自己试试呢?它在我看来在语法上是正确的。另外请告诉我们您使用的是什么 RDBMS。
-
我试过了,但不幸的是结果不是我所期望的。我正在使用 MSSQL
-
请向我们展示完整的查询,以可读的方式格式化(每行前面有 4 个空格),以及您拥有的确切错误输出。
-
看起来您只是缺少
END。此外,它是一个CASE表达式,而不是一个语句。它计算一个值。 -
尝试在总计后删除逗号,将视图(保留字)放在方括号中,看来您真正的问题是您需要在查询末尾使用 GROUP BY
标签: sql sql-server tsql stored-procedures case