SQL-оператор внутри предложения декодирования - PullRequest
2 голосов
/ 02 марта 2011

Декодирование работает следующим образом:

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 ]

4 голосов
/ 02 марта 2011

Если someSql и someOthersql вернуть ровно одну строку с одним столбцом, то это должно сработать.

У меня работает следующее:

select decode(col, (select 'foo' from dual), (select 'bar' from dual))
from some table
1 голос
/ 02 марта 2011

Я думаю, что вам может понадобиться создать процедуру PL / SQL для обработки сложной логики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...