sql - 如果 column1 与所需条件不匹配,则选择 column2
问题描述
似乎我无法找到一种有效的方法来使用 oracle SQL 查询来解决这个问题。
请分享您的建议。
我有下表。
描述 | 代码1 | 代码2 | 代码3 | 代码4 | 代码5 |
---|---|---|---|---|---|
苹果 | 一个 | AA | 啊 | ap | 埃 |
苹果 | C | AA | 啊 | ap | 埃 |
苹果 | 一个 | DD | 啊 | ap | 埃 |
芒果 | 米 | 嘛 | 锰 | 毫克 | 莫 |
我会使用查询
Select Desc from myTable where Code1='A'
上面的查询会给我'Apple'作为回复
Select Desc from myTable where Code2='AA'
上面的查询将再次给我“Apple”作为回复
结合两者:
Select Desc from myTable where (Code2='AA' or Code1='A')
我怎么知道由于哪个列满足了“OR”条件?
解决方案
您可以在select
:
Select t.Desc,
(case when Code2 = 'AA' then 'Code2'
when Code1 = 'A' then 'Code1'
end)
from myTable t
where Code2 = 'AA' or Code1 = 'A';
如果您想同时查看两者是否匹配,请调整逻辑:
Select t.Desc,
trim(',' from
(case when Code2 = 'AA' then ',Code2' end) '||'
(case when Code1 = 'A' then ',Code1' end)
) as columns
from myTable t
where Code2 = 'AA' or Code1 = 'A';
您还可以使用横向连接、子查询或 CTEcolumns
仅定义一次:
Select t.Desc, c.columns
from myTable t cross join lateral
(select trim(',' from
(case when Code2 = 'AA' then ',Code2' end) '||'
(case when Code1 = 'A' then ',Code1' end)
) as columns
from dual
) c
where columns is not null;
推荐阅读
- python - 如何从列表中检测句子中的单词?
- opencv - 我在 ubuntu 18.04 中使用 openCV 时遇到问题
- excel - 比较 2 个工作簿中的行并复制新工作簿中的差异
- django - 在我的 Django 和 DRF 项目中,我的正确工作链接出现服务器错误,添加 404 页面后找不到 404 页面丢失 url
- c - 如何正确设置 xwindows 属性
- sql - 如何在 SQL 中为每 3 位添加逗号?
- math - 根据给定的过去发生频率查找每日发生次数
- python - 调试屏幕返回 HTML 屏幕而不是我的文件
- python - python在csv的列和行中组合2个re.findall字符串
- spring-boot - 如何在spring boot中的多对一映射中获取带有内部post对象的用户对象