sql语句在decode子句中

发布于 2024-10-19 20:34:59 字数 419 浏览 3 评论 0原文

解码的工作原理如下:

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

The decode works like this:

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

It possible to accomplish this in sql:

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

So instead of result1 and result2 being fixed values, they would be sql statements. If not possible, how can I achieve the same result without a stored proc.

EDIT: someSql and someOthersql are both complex queries with many joins returining many but same number of cols with same col names.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感性不性感 2024-10-26 20:34:59

如果someSqlsomeOthersql返回完全一行一列,那么这应该可以工作。

以下对我有用:

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

If someSql and someOthersql return exactly one row with one column, then this should work.

The following works for me:

select decode(col, (select 'foo' from dual), (select 'bar' from dual))
from some table
乜一 2024-10-26 20:34:59

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

I think you may need to create a PL/SQL procedure to handle the complex logic.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文