sql语句在decode子句中

时间:2011-03-02 19:03:50

标签: sql oracle

解码的工作原理如下:

SELECT DECODE('col1', 'x', 'result1','y','result2') resultFinal 
 FROM table1;

可以在sql中完成此任务:

SELECT * 
  FROM (SELECT DECODE('col1', 'x' (someSql),'y',(someOthersql)) result 
          FROM table1)

因此,而不是result1和result2是固定值,它们将是sql语句。如果不可能,如果没有存储过程,我怎样才能获得相同的结果。

编辑:someSql和someOthersql都是复杂的查询,有许多连接返回许多但具有相同列号的相同数量的列。

2 个答案:

答案 0 :(得分:4)

如果 someSql someOthersql 使用一列返回完全一行,那么这应该可行。

以下适用于我:

select decode(col, (select 'foo' from dual), (select 'bar' from dual))
from some table

答案 1 :(得分:1)

我认为您可能需要创建一个PL / SQL过程来处理复杂的逻辑。