我试图创建一个子表,“存储”两个值之间的解码,因为我需要多次使用该解码 . 让我们说这些是我的表:
Table Person
Name Number_name
Jeremy One
Thomas Two
Stephen Three
我当前的SQL看起来像这样:
SELECT
decode (number_name,
'one',1,
'two',2,
'three',3,
'four',4)
num
FROM person where name = 'Jeremy'
and (some other condition)
UNION SELECT
decode (number_name,
'one',1,
'two',2,
'three',3,
'four,4)
num
FROM Person
where Name <> "Jeremy"
and (some other condition)
我希望能做的是这样的:
SELECT num from my_temp_table where name = "Jeremy" and (some other condition)
union select num from my_temp_table where name <> "Jeremy" and (some other condition)
...
其中my_temp_table是在该查询期间构造的(当查询完成运行时它不再存在)并且看起来像
Table my_temp_table
Name num
One 1
Two 2
Three 3
Four 4
希望我能做到这一点,而不是“选择一个名字,1个来自双联盟的数字......”
这可行吗?
1 回答
WITH
子句听起来与你所描述的最接近 . 但这需要您以某种方式生成数据 . 从DUAL
中选择可能是最简单的选择既然你不想结合大量的查询,你可以做类似的事情