我想写一个允许我根据条件动态获取列数的查询,这就是我要找的:
select column1,column2,column3 , columncond from table , if : columncond = 'true'
select column4,column5 , columncond from table ,if : columncond = 'false'
我如何在一个查询中创建此逻辑并根据columncond(true或false)的值动态获取结果,我正在使用oracle。
提前感谢。
答案 0 :(得分:3)
您不能使用单个查询返回具有不同列数的不同行;单个查询的所有行必须具有相同的列数和类型。
您可以做的是编写一个返回固定数量列的查询,但根据某些条件在您不想要的列中使用NULL。
例如:
SELECT CASE WHEN columncond = 'true' THEN column1 ELSE column4 END,
CASE WHEN columncond = 'true' THEN column2 ELSE column5 END,
CASE WHEN columncond = 'true' THEN column3 ELSE NULL END,
columncond
FROM your_table
答案 1 :(得分:0)
使用
select column1,column2,column3 , columncond
from table
where columncond = 'true';
select column4,column5 , columncond
from table
where columncond = 'false';