Нужна помощь по синтаксической ошибке в CREATE VIEW - PullRequest
0 голосов
/ 22 мая 2018

Ранее я создал 2 вида, как показано ниже:

CREATE VIEW T22 
AS
    (SELECT anumber, AVG(slevel) 
     FROM SPOSSESSED
     GROUP BY anumber);

CREATE VIEW T23 (anumber, slevel) 
AS
    (SELECT anumber, 0 
     FROM APPLICANT 
     WHERE anumber NOT IN (SELECT anumber FROM SPOSSESSED));

Теперь мне нужно СОЗДАТЬ ВИД, который является СОЮЗОМ обоих вышеупомянутых видов.Я попробовал это утверждение, которое прекрасно работает и показывает желаемый результат:

SELECT * 
FROM T22 
UNION 
SELECT * 
FROM T23;

Но когда я пытаюсь создать представление для этого, возникает синтаксическая ошибка, которую я не могу определить:

CREATE VIEW T24 
AS 
   (SELECT * 
    FROM T22 
    UNION 
    SELECT * 
    FROM T23);

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Конфликт в схеме именования столбцов, вы не можете использовать SELECT * в этой ситуации.Однако вы можете изменить anumber и присвоить ему другое имя.Решить проблему.

Что-то вроде:

CREATE VIEW T24
AS
(
        SELECT anumber AS anumber1,
            AVG(slevel)
        FROM T22

        UNION

        SELECT anumber,
            slevel
        FROM T23
        );
0 голосов
/ 22 мая 2018

Соответствуют ли типы данных в таблице t22 и таблице t23?Соответствует ли количество столбцов?Пожалуйста, опубликуйте полученную ошибку.

0 голосов
/ 22 мая 2018

Мне удалось решить проблему самостоятельно, opps!

Решением было просто удалить скобки и синтаксическая ошибка исчезла:

CREATE VIEW T24 AS SELECT* FROM T22 UNION SELECT * FROM T23;
...