如何使用列条件动态选择列表

时间:2016-05-24 11:15:38

标签: sql oracle

我想写一个允许我根据条件动态获取列数的查询,这就是我要找的:

select column1,column2,column3 , columncond from table , if : columncond = 'true'
select column4,column5 , columncond from table ,if : columncond = 'false'

我如何在一个查询中创建此逻辑并根据columncond(true或false)的值动态获取结果,我正在使用oracle。

提前感谢。

2 个答案:

答案 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';