【发布时间】:2021-08-12 14:36:42
【问题描述】:
我需要返回一个字段“AMOUNT”,它是根据 2 个不同的列计算得出的。
最初有这个(我知道我可以有 OR 语句,但这样更容易阅读):
CASE WHEN [condition AND condition] THEN 1
WHEN [condition AND condition] THEN 1
WHEN [condition AND condition] THEN 1
WHEN [condition AND condition] THEN 2
WHEN [condition AND condition] THEN 2
WHEN [condition AND condition] THEN 2
WHEN [condition AND condition] THEN 3
WHEN [condition AND condition] THEN 3
WHEN [condition AND condition] THEN 3
ELSE 4
END AS AMOUNT
但是,条件会根据日期列而变化。所以现在我想写一个 IF-ELSEIF-ELSE 语句中的 CASE WHEN STATMENT
IF (DATE < 01.01.2020) THEN
CASE WHEN [condition] THEN 1
WHEN [condition] THEN 1
WHEN [condition] THEN 1
WHEN [condition] THEN 2
WHEN [condition] THEN 2
WHEN [condition] THEN 2
WHEN [condition] THEN 3
WHEN [condition] THEN 3
WHEN [condition] THEN 3
ELSE 4
ELSEIF (DATE >= 01.01.2020 AND DATE <01.07.2020) THEN
CASE WHEN [condition] THEN 1
WHEN [condition] THEN 1
WHEN [condition] THEN 1
WHEN [condition] THEN 2
WHEN [condition] THEN 2
WHEN [condition] THEN 2
WHEN [condition] THEN 3
WHEN [condition] THEN 3
WHEN [condition] THEN 3
ELSE 4
ELSE
CASE WHEN [condition] THEN 1
WHEN [condition] THEN 1
WHEN [condition] THEN 1
WHEN [condition] THEN 2
WHEN [condition] THEN 2
WHEN [condition] THEN 2
WHEN [condition] THEN 3
WHEN [condition] THEN 3
WHEN [condition] THEN 3
ELSE 4
END AS AMOUNT
它似乎不起作用,所以我认为可能存在语法问题。
【问题讨论】:
-
您是在谈论 SQL 中的 CASE 表达式 还是 PL/SQL 中的 CASE 语句 - 这是两个非常不同的东西。 (SQL中没有IF,只有PL/SQL)
-
PL/SQL中的case语句
-
那么请向我们展示您的程序(或函数)的完整代码。正如所写的那样,这些语句对我来说真的没有意义(因为您没有将 CASE 的结果分配给变量)
-
你可以在case语句中使用case。
标签: if-statement plsql nested case