6

私は 2 つの関係ビューを持っています。

最初のビュー:

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#;

2 番目のビュー:

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#;

SELECT * FROM VIEW1 UNION ALL SELECT * FROM VIEW2 を使用します

そして、エラーORA-01789が発生しました。

私が達成したいことは

T#    |       ORIGIN   | DESTINATION1 | DESTINATION2
------------------------------------------------------
1            abc            efg           hij

私が作成したものはリレーショナル ビューと見なされますか?

4

2 に答える 2

11

UNION ALL を実行するには、両方のビューの列数が同じである必要があります。Oracle リファレンスを参照してください: UNION ALL、INTERSECT、MINUS 演算子

于 2013-03-08T09:05:29.847 に答える