Oracle中具有多个True表达式的Case语句



我遇到一种情况,我有多个表达式为True,我需要在报告中定义的同一列中返回所有表达式。

我尝试应用case语句或嵌套的case语句,但我只看到一个结果,因为case语句只获取第一个true表达式。

如何添加多个Case语句来检索所有true条件?

**从PL/SQL中提取示例:**

SELECT CRN, CASE 
WHEN CASE_1 = 'A' AND CASE_2 = 'B' 
THEN FORMULA1 -- FORMULA1 is an output of a query
WHEN CASE_1 = 'A' AND CASE_2 = 'C'
THEN FORMULA2 -- FORMULA2 is an output of a query
WHEN CASE_3 THEN FORMULA3 -- FORMULA3 is an output of a query
END AS INV
FROM ACC;
  1. Formula 1输出:100

  2. 公式2输出:500

  3. 公式3输出:400

我得到的是:

CRNINV
美元100

基于@SadlyFullStack的评论,我建议使用以下语句

SELECT CRN, FORMULA1 AS INV FROM ACC WHERE CASE_1 = 'A' AND CASE_2 = 'B'
UNION ALL
SELECT CRN, FORMULA2 AS INV FROM ACC WHERE CASE_1 = 'A' AND CASE_2 = 'C'
UNION ALL
SELECT CRN, FORMULA3 AS INV FROM ACC WHERE CASE_3

最新更新