Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle子查询中定义临时表值_Sql_Oracle_Subquery - Fatal编程技术网

Sql 如何在Oracle子查询中定义临时表值

Sql 如何在Oracle子查询中定义临时表值,sql,oracle,subquery,Sql,Oracle,Subquery,我是从非DBA的角度来处理这个问题的,因为我没有为数据库创建新表的权限。我试图通过在Oracle中使用类似于以下sudo代码的子查询来解决此问题: With temptable as ('col1name', 'col2name', 1,'a',2,'b') Select * from temptable where col1name = 1 看起来很诱人 Col1name | Col2name 1 a 2 b 输出为第1行。我知道这不是最简单的方法,

我是从非DBA的角度来处理这个问题的,因为我没有为数据库创建新表的权限。我试图通过在Oracle中使用类似于以下sudo代码的子查询来解决此问题:

With temptable as ('col1name', 'col2name', 1,'a',2,'b')
Select * from temptable where col1name = 1
看起来很诱人

Col1name | Col2name
1           a
2           b

输出为第1行。我知道这不是最简单的方法,但在我得到管理员批准一个新表之前,这是我完成任务所能想到的全部。我找了很多,但找不到答案。有没有一种简单的方法来定义这样的临时表数据?

我会这样做:

with temptable as (
      select 1 as col1name, 'a' col2name from dual union all
      select 2, 'b' from dual
     )
Select *
from temptable
where col1name = 1;

我会这样做:

with temptable as (
      select 1 as col1name, 'a' col2name from dual union all
      select 2, 'b' from dual
     )
Select *
from temptable
where col1name = 1;

作为Gordon建议的CTE(公共表表达式)的替代方案,您还可以将查询用作老式的内联视图

例如:

 SELECT tt.col1name
      , tt.col2name
   FROM ( SELECT 1 AS col1name, 'a' AS col2name FROM DUAL
          UNION ALL SELECT 2, 'b' FROM DUAL
          UNION ALL SELECT 3, 'c' FROM DUAL
        ) tt
  WHERE tt.col1name = 1
  ORDER
     BY tt.col1name

作为Gordon建议的CTE(公共表表达式)的替代方案,您还可以将查询用作老式的内联视图

例如:

 SELECT tt.col1name
      , tt.col2name
   FROM ( SELECT 1 AS col1name, 'a' AS col2name FROM DUAL
          UNION ALL SELECT 2, 'b' FROM DUAL
          UNION ALL SELECT 3, 'c' FROM DUAL
        ) tt
  WHERE tt.col1name = 1
  ORDER
     BY tt.col1name