sql - 在 oracle 的另一个 case 语句中使用 case 语句的结果
问题描述
我有一个视图,其中包含一列的强制转换语句。此 cast 语句包含一个 case 语句。这个说法有效。此语句的结果是 1、2 或 3。
从这里开始,我需要使用前一个 case 语句的结果(我使用了 WITH 语句,但它不起作用)来确定列的值。一个简单的 case 语句,将 yes、no 或 null 分配给上述语句的值(1、2 或 3)
任何帮助表示赞赏。谢谢你。
使用伪代码的示例:
CAST (
WITH case_output
AS(
SELECT
CASE
WHEN EXISTS
(select from table where blah blah)
THEN
(select column from that table)
ELSE
(select from some another table)
END
)
CASE
WHEN case_output = 1
THEN 'Yes'
WHEN case_output = 2
THEN 'No'
else
NULL
AS VARCHAR2 (10))
column_name,
.... [rest of query]
解决方案
您正在混淆查询名称和WITH
子句的列名称。例如,它是
WITH my_query AS (SELECT c1 AS my_column FROM t1)
SELECT my_column FROM my_query;
FROM
其次,在 Oracle 的 SQL 中总是需要一个子句。使用虚拟表DUAL
作为替身:
SELECT CASE WHEN ... THEN END AS my_column
FROM DUAL;
最小的工作示例:
CREATE TABLE t1 (c1 INT);
CREATE TABLE t2 (c2 INT);
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (2);
WITH case_query AS (
SELECT CASE WHEN EXISTS (SELECT * FROM t1 WHERE c1=100)
THEN (SELECT c1 FROM t1)
ELSE (SELECT c2 FROM t2)
END AS case_output
FROM dual)
SELECT CASE case_output
WHEN 1 THEN 'Yes'
WHEN 2 THEN 'No'
ELSE NULL
END second_case_output
FROM case_query;
推荐阅读
- google-apps-script - 当某行在某列中填写为“完成”时,从 Google 表格发送电子邮件
- r - 将简单的 xml 节点转换为 R 数据框获取空值
- go - 将 JSON 公钥/私钥对转换为 rsa.PrivateKey 和 rsa.PublicKey
- python-3.x - 根据另一个列值从数据框中打印列表
- angular - HttpInterceptor->自定义服务->模块循环依赖
- excel-formula - VLOKUP 返回错误的范围
- python - 如何从 GML 文件中提取数据
- reporting-services - SSRS 项目在迁移后无法编译 - 错误 BC30451
- python - 在 Django 上测试 Ajax
- typescript - 具有强类型 Axios 请求的 Vue3