本帖最后由 beanslee 于 2012-1-9 17:18 编辑
在select语句中向使用多个字段的计算的结果作为别名,在select子句中使用,如下sql :
select a as a1,b as b1 ,a+b as c,c/2 as d from test(test表有a,b2个字段)
这样的写法在oracle里面是不能执行的
目前想到的只能是采用下面的方法实现:
select a1,b1,c,c/2 d from (
select a as a1,b b1,a+b as c from test
)
或
select a a1,b b1,f_sum(a,b) c,f_sum(a,b)/2 d from test--写1函数
或
with
s1 (select a ,a+b as cfrom test)
select t1.a a1,t1.b b1,s1.c,s1.c/2 as d from test t1,s1
where t1.a=s1.a
第一个sql嵌套了一层,效率应该会受到一定影响吧
第二个sql用函数的话,由于f_sum执行2遍,是否效率也会受到影响呢?
第三个sql的效果在复杂的sql情况下应该最好吧?
不知有没有更好的解决方法
|