解码的工作原理如下:
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都是复杂的查询,有许多连接返回许多但具有相同列号的相同数量的列。答案 0 :(得分:4)
如果 someSql 和 someOthersql 使用一列返回完全一行,那么这应该可行。
以下适用于我:
select decode(col, (select 'foo' from dual), (select 'bar' from dual)) from some table
答案 1 :(得分:1)
我认为您可能需要创建一个PL / SQL过程来处理复杂的逻辑。