sql - 如果 Oracle SQL 中的第一个字段有值,如何使第二个字段为空
问题描述
我在 ORACLE 中有两个计算列(Ex3 和 EX12)。因此,无论两个字段都有值(例如:ID 118189AC),id 都喜欢将值保留在 EX3 中,但将 EX12 变为 NULL。有什么建议么?
SELECT *
FROM
(SELECT ID,
CASE
WHEN PORT IN ('CAP')
THEN 3
ELSE NULL
END AS EX3,
CASE
WHEN PORT NOT IN ('TEST1', 'TEST2', 'TEST3')
THEN 12
ELSE NULL
END AS EX12
FROM LAN.DETAILS)
WHERE (EX3 IS NOT NULL OR EX12 IS NOT NULL)
ORDER BY ID ASC
ID EX3 EX12
118051PU 12
118052PU 12
118189AC 3 12
118397PU 12
118451AC 3 12
119343AC 3 12
119387PU 12
119484PU 12
119772PU 12
119997PU 12
120320AC 3 12
解决方案
我想你只想要一个case
表达:
select id, ex3,
(case when ex3 is not null and ex12 is not null then null else ex12 end) as ex12
. . .
推荐阅读
- regex - 正则表达式排除字符串的第一部分
- android - Android WorkManager - CoroutineWorker:不推荐使用覆盖 coroutineContext
- c# - C# 中的连接登记到底是什么
- python - 熊猫:如何在熊猫数据框中从整数基本时间开始创建一个额外的经过时间列?
- android - Android 10 请求 ACTIVITY_RECOGNITION 的权限
- c++ - valgrind 抱怨 C++ 结构上的未初始化字节
- input - sap.m.input 焦点在 Fiori Launchpad 中第二次不起作用
- python - 在 Ubuntu VM 中运行 python3 文件时无法打开 lib 'SQL Server Native Client 11.0'
- c++ - 是否允许在默认成员初始化程序中调用非静态成员函数?
- python - Python数据框 - 计算正返回天数