with table as 是用于创建临时表,它是用来创建临时表,主要是在进行查询的时候,做一个测试用
个人感觉好处有如下几点:
1.起到一个测试作用,不需要创建实体表;
2.当你需要进行一个复杂的查询时,可以从中提取单表或者多表的一些公共内容,这样不会造成很大的查询语句;
3.对一些数据量比较大的多项查询时,可以使用它先产生有一个中间结果,而它是可以被语句中的select语句使用,可以提高效率。
例如:
with x as
(select rownum as seq,a.*
from (select 标号,项目,金额 from detail order by 标号) a)
select 标号,
项目,
金额,
(case when seq=1 then 金额 else -金额 end) as 转换后的值
from x;