使用define存储select语句的结果

时间:2018-11-02 13:27:26

标签: sql oracle select

晚上好,我想问一些事情的可行性,因此我在里面有一条select语句,选择了许多相似的子查询 我只想使用一次子查询并存储它的结果,我已经尝试过类似的操作,但是我不知道该怎么办 任何帮助将不胜感激

define A = Select somthing from TableA
Select case
          when A <0
          then 1
          else 2
          End as selectedcolumn   from TableB

但是我认为define仅用于静态值

1 个答案:

答案 0 :(得分:0)

您可以通过CTE来完成此操作,例如

WITH A AS 
  SELECT COUNT(*) c FROM TableA A 
  WHERE A.ColumnA = B.ColumnB 
    AND A.ColumnA2 = 0 
Select A.c As test 
  from TableA ta 
inner join TableB tb 
  on ta.columnA=tb.columnB 
cross join A

这将使A.c在您的查询中可用。然后,您还可以在查询中的任何地方进行(select c from A)来获取值。

或者,如果您正在SQL * Plus中运行脚本,则可以使用new_value定义列变量:

COLUMN my_count NEW_VALUE my_constant
SELECT COUNT(*) my_count FROM TableA A 
  WHERE A.ColumnA = B.ColumnB 
    AND A.ColumnA2 = 0;

然后您可以稍后在脚本中使用替换字符串&&my_constant引用它:

Select case
      when &&my_constant <0
      then 1
      else 2
      End as selectedcolumn from TableB