首页 > 解决方案 > 'CREATE VIEW' must be the first statement in a query batch' 错误使用 GO

问题描述

我有以下查询:

CREATE VIEW VIEW#1 AS
SELECT * FROM rota

go
--view#02 – apresentar os voos programados para cada rota.

CREATE VIEW VIEW#2 AS
SELECT TOP (select COUNT(*) FROM voo) IDrota, IDvoo
FROM voo
ORDER BY IDrota

GO
--view#03 – apresentar os técnicos de apoio para cada um dos voos programados.

CREATE VIEW VIEW#3 AS
SELECT TOP (select COUNT(*) FROM tecnicosVoo) V.IDvoo, TV.IDfuncionario, F.PrimeirosNomes, F.UltimosNomes, F.funçãoTecnico FROM voo V
    JOIN tecnicosVoo TV ON V.IDvoo = TV.IDvoo
    JOIN funcionario F ON TV.IDfuncionario = F.IDfuncionario
    ORDER BY IDvoo

GO
--view#04 – apresentar os voos programados para cada rota e os respetivos aviões associados.

CREATE VIEW VIEW#4 AS
SELECT TOP (SELECT COUNT(*) FROM voo) R.IDrota, V.IDvoo, A.refAviao, A.modelo AS 'Modelo do avião' FROM voo V
    JOIN rota R ON V.IDrota = R.IDrota
    JOIN aviao A ON V.refAviao = A.refAviao
    ORDER BY R.IDrota

--view#05 - apresentar para um voo a relação de lugares disponiveis

go

CREATE VIEW VIEW#5 AS
SELECT TOP (SELECT COUNT(*) FROM voo) VO.IDvoo, A.NT_passageiros 'Capacidade do avião', (SELECT count(*) FROM VendaVoo where IDvoo = VO.IDvoo and ocupacao = 1) 'Ocupados',
(select round((100.0 - ((select CAST((SELECT count(*) FROM VendaVoo where IDvoo = VO.IDvoo and ocupacao = 1) AS FLOAT) / CAST(A.NT_passageiros AS FLOAT)) * 100)), 2)) 'Percentagem de lugares disponiveis'
FROM voo VO
    JOIN aviao A ON VO.refAviao = A.refAviao

它给了我这个错误:

“消息 102,级别 15,状态 1,过程 VIEW#4,第 640 行 'GO' 附近的语法不正确。

消息 111,级别 15,状态 1,过程 VIEW#4,第 640 行‘CREATE VIEW’必须是查询批处理中的第一条语句。”

因此查询创建了视图 1、2 和 3,但不创建另一个视图。有人知道为什么吗?

标签: sqlsql-server

解决方案


推荐阅读