有时需要一个计算列,该列的数据由别的列的数据计算得出。 如:select field1, field2, field1+field2
from table1第三列是计算列。但如果计算列需要从取了别名的列计算得出,就不能直接使用:select .... , sum(count1) "count1", sum(count2) "count2" , "count1"+"count2"
from table1这样的sql会执行提示出错。 需要改成下面的形式,才可以执行:select a."count1", a."count2", a."count1"+a."count2"
from
(select .... , sum(count1) "count1", sum(count2) "count2"
from table1)
别名列好像前面一定要加上表名前缀才可以出现在计算列里面啊。
有没有什么解决方法, 这样好麻烦啊。
from table1第三列是计算列。但如果计算列需要从取了别名的列计算得出,就不能直接使用:select .... , sum(count1) "count1", sum(count2) "count2" , "count1"+"count2"
from table1这样的sql会执行提示出错。 需要改成下面的形式,才可以执行:select a."count1", a."count2", a."count1"+a."count2"
from
(select .... , sum(count1) "count1", sum(count2) "count2"
from table1)
别名列好像前面一定要加上表名前缀才可以出现在计算列里面啊。
有没有什么解决方法, 这样好麻烦啊。
or
select .... , sum(count1) "count1", sum(count2) "count2" , sum(count1) +sum(count2)as "count1+count2"
试试看
from table1
例如:select id iidd from a where iidd=1是错误的,应该select id iidd from a where id=1sum后面不一定要跟group by的
例如:select sum(id),sum(aa),sum(bb),sum(aa+bb),sum(aa)+sum(bb) from a都是可以的
sum后面是不一定要跟GROUP BY
但是如果是:select id,sum(id) from a
以及select id,count(id) from a
以及select id,max(id) from a
就不行了!如果想不用GROUP BY,就用
select id,sum(id)over() from a
以及select id,count(id)over() from a
以及select id,max(id)over() from a()中可以不写,至于写什么就看自己的处理了.
from .......waterfirer(水清) 应该是对的:
在给列定义别名的时候,别名不能在当层语句中使用。所以我用另外一个写法就可以了,因为别名已经用在了上一层。
select a."count1", a."count2", a."count1"+a."count2"
from
(select .... , sum(count1) "count1", sum(count2) "count2"
from table1)那这样说没有比较好的解决方法了。 只有把查询结果作为一个结果集再次查询一次。