解码子句内的sql语句

解码子句内的sql语句,sql,oracle,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语句。如果不可能,如

解码的工作原理如下:

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都是复杂的查询,具有许多连接,返回许多但数量相同的列,具有相同的列名称。

如果someSql和someOthersql只返回一行一列,那么这应该可以工作

以下是我的作品:

select decode(col, (select 'foo' from dual), (select 'bar' from dual)) from some table
我认为您可能需要创建一个PL/SQL过程来处理复杂的逻辑。

是的。当sql很简单时,比如:从dual中选择1,它会给出正确的结果。但实际上,sqls需要复杂的多个连接。将返回许多列。什么是替代soln?当我使用实际的sqls运行时,它给出:值太多您不能在另一个语句的SELECT列表中返回多个列的查询。即使有可能,解码应该如何工作呢?在一个只允许一个值的地方提供多个值。你应该陈述你正在试图解决的真正的潜在问题,而不是一个你认为你只需要克服一些技术障碍的解决方案。