晚上好,我想问一些事情的可行性,因此我在里面有一条select语句,选择了许多相似的子查询 我只想使用一次子查询并存储它的结果,我已经尝试过类似的操作,但是我不知道该怎么办 任何帮助将不胜感激
define A = Select somthing from TableA
Select case
when A <0
then 1
else 2
End as selectedcolumn from TableB
但是我认为define仅用于静态值
答案 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