错误:ORA-01789:查询块的结果列数不正确

Rus*_*dii 5 sqlplus

我有两种关系观点。

第一种观点:

CREATE VIEW VIEW1
AS
SELECT T#,
MAX(DECODE(LEG#,1,DEPARTURE)) ORIGIN,
MAX(DECODE(LEG#,1,DESTINATION)) DESTINATION1
FROM TRIPLEG
WHERE T# IN
(SELECT T# FROM TRIPLEG WHERE LEG# < 3
AND T# IN
(SELECT T# FROM TRIPLEG GROUP BY T#
HAVING COUNT(T#) < 3)
GROUP BY T#)
GROUP BY T#
ORDER BY T#;
Run Code Online (Sandbox Code Playgroud)

第二种观点:

CREATE VIEW VIEW2
AS
SELECT T#,
MAX(DECODE(LEG#,2,DESTINATION)) DESTINATION1
FROM TRIPLEG
WHERE T# IN
(SELECT T# FROM TRIPLEG WHERE LEG# < 3
AND T# IN
(SELECT T# FROM TRIPLEG GROUP BY T#
HAVING COUNT(T#) < 3)
GROUP BY T#)
GROUP BY T#
ORDER BY T#;
Run Code Online (Sandbox Code Playgroud)

我使用SELECT * FROM VIEW1 UNION ALL SELECT * FROM VIEW2

而且我收到错误ORA-01789。

我想要实现的是

T#    |       ORIGIN   | DESTINATION1 | DESTINATION2
------------------------------------------------------
1            abc            efg           hij
Run Code Online (Sandbox Code Playgroud)

我创建的是所谓的关系视图?

Car*_*los 8

两个视图必须具有相同的列数才能执行UNION ALL。查看Oracle参考资料:UNION ALL,INTERSECT,MINUS运算符