oracle - 如何根据输入变量运行不同的查询?
问题描述
我必须根据传入变量的值从单个表中返回不同的列。
我尝试过使用 case 语句,但没有成功。有没有办法实现这个逻辑?
select
case
when :var1='A1' then (select variable,value1,value2 from table where variable='A1')
when :var1='A2' then (select variable,value3,value4 from table where variable='A2')
end
from dual;
解决方案
将 CASE 移到 SELECT 中:
SELECT someVariable AS VARIABLE_NAME,
CASE someVariable
WHEN 'A1' THEN VALUE1
WHEN 'A2' THEN VALUE3
ELSE NULL
END AS FIRST_VALUE,
CASE someVariable
WHEN 'A1' THEN VALUE3
WHEN 'A2' THEN VALUE4
ELSE NULL
END AS SECOND_VALUE
FROM TABLE
推荐阅读
- javascript - ZingChart X 轴标签的间距不均匀
- pandas - 将 DataFrame 转换为列名是键值的字典列表:值对
- php - 从数据库获取的复杂情况
- javascript - 从 Django 页面到 React 页面的浏览器后退按钮呈现原始 JSON
- javascript - 如何播放使用接受导入的音频文件?
- python - 将图像添加到熊猫数据框行
- regex - 从 Google 表格中的列中删除重复项
- .net - IIS 10 和 IIS Express - MVC 应用程序 - 403 - 禁止访问:访问被拒绝
- macos - 为什么我在尝试连接到我的 EC2 时收到“无法解析主机名”
- installation - Visual Studio 安装项目删除刚刚升级的文件