两个不同的表连接视图

时间:2017-04-30 21:39:25

标签: oracle join oracle-sqldeveloper union create-view

CREATE VIEW KC_Salary AS 
SELECT DEPT_SNAP.DEPTNO,
        DEPT_SNAP.DNAME, 
        Sum(EMP.SAL) as Avg_Salary, 
        COUNT(EMP.SAL) as Total_Salary, 
        EMP.DEPTNO 
FROM DEPT_SNAP
union
select Sum(EMP.SAL) as Avg_Salary, 
       COUNT(EMP.SAL) as Total_Salary,
       EMP.DEPTNO 
from EMP;

我正在尝试使用两个不同的表来创建视图。我正在接受

  

SQL错误:ORA-01789:查询块的结果数不正确   列        1. 00000 - “查询块的结果列数不正确”

如果您有任何提示或想法,请提供帮助。

2 个答案:

答案 0 :(得分:0)

您想要合并两个语句的结果 - 其中第一个语句有五个,但第二个只有三个列。两者都需要具有相同数量的列。 (并且相同位置的列必须是兼容类型。)

作为旁注:您的列别名似乎与应用的函数不匹配。

更新

总结评论,你可能正在寻找类似的东西:

CREATE VIEW KC_Salary AS 
SELECT
  D.DEPTNO
  , D.DNAME 
  , AVG(E.SAL) AS Avg_Salary
  , SUM(E.SAL) AS Total_Salary
FROM DEPT_SNAP D
JOIN EMP E
  ON D.DEPTNO = E.DEPTNO
GROUP BY D.DEPTNO, D.DNAME
;

答案 1 :(得分:0)

CREATE VIEW KC_Salary AS 
SELECT DEPT_SNAP.DEPTNO,
               DEPT_SNAP.DNAME, 
               Avg(EMP.SAL) as Avg_Salary, 
               Sum(EMP.SAL) as Total_Salary
FROM DEPT_SNAP 
    ,EMP
WHERE DEPT_SNAP.DEPTNO = EMP.DEPTNO
GROUP BY DEPT_SNAP.DEPTNO, DEPT_SNAP.DNAME