我如何在PL / SQL(Oracle 11)中做这样的事情?
select
1 as aa,
2 as bb,
3 as cc,
(aa + bb + cc) as total
from my_table;
得出这个:
-------------------------
aa bb cc total
-------------------------
1 2 3 6
-------------------------
答案 0 :(得分:1)
这是你需要的吗?
SELECT aa,bb,cc,aa+bb+cc as total
FROM (
SELECT 1 as aa,
2 as bb,
3 as cc
FROM My_Table)
如果是这样,我不明白为什么要使用My_Table
而不是双..
答案 1 :(得分:0)
select aa,
bb,
cc,
aa + bb + cc as total
from
(
select 1 as aa,
2 as bb,
3 as cc
from dual
)
答案 2 :(得分:0)
我们还必须处理空值,因为它会导致结果
SELECT (temp.a + temp.b + temp.c) sumTemp FROM (
SELECT NVL(a,0) as a, NVL(b,0) as b, NVL(c,0) as c FROM DUAL
) temp
答案 3 :(得分:0)
如果我正确理解你的问题,你就不能 - 不像你写的那样。您无法在同一SELECT(同一级别)中构建另一列时引用列别名。而不是aa + bb + cc
,您将不得不重复1, 2, 3
。
为了澄清,我相信你的问题背后的内容是这样的:
select deptno, max(salary) as max_s, min(salary) as min_s, (max_s + min_s)/2 as mid_s
from scott.emp
group by deptno
(尝试使用大多数Oracle数据库安装中存在的标准EMP
架构中的SCOTT
表,按部门查找中端薪水)
您不能这样做 - 您必须在最后一列的公式中重复max(salary)
和min(salary)
,否则您将需要子查询和外部查询。在几乎所有情况下,第一选择而不是第二选择将更有效(即使它需要更多写作 - 并且可能更难维护)。