sql - “CREATE VIEW”必须是查询批处理中的第一条语句

标签 sql sql-server-2008

基本上就是标题所说的。这是我的代码。

USE Assignment2;
GO

/* Player View (2 marks)
    Create a view which shows the following details of all players:
        • The ID number of the player
        • The first name and surname of the player concatenated and given an alias of “full_name”
        • The team ID number of the player (if applicable)
        • The team name of the player (if applicable)
        • The coach ID number of the player (if applicable)
        • The name of the player’s coach (if applicable)

   Creating this view requires a select statement using multiple joins and concatenation of names.  
   Make sure that you use the appropriate type of join to ensure that players without teams or coaches are still included in the results.

*/


-- Write your Player View here
PRINT 'Creating Player View'

CREATE VIEW playerView AS 
SELECT player.id, player.firstName + ' ' + player.surname AS 'Full name', player.team, team.name, player.coach, coach.firstName, coach.surname 
FROM player
LEFT OUTER JOIN team
    ON player.team = team.id
    LEFT OUTER JOIN player as coach
        ON player.coach = coach.id;



GO
/* Race View (3 marks)
   Create a view which shows the following details of all races:
        • All of the columns in the race table
        • The name of the race type, course and team involved in the race
        • The full name of the player observing the race and the full name of the MVP (if applicable)
        • A calculated column with an alias of “unpenalised_score”, which adds the points penalised to the final score

   Creating this view requires a select statement using multiple joins and concatenation of names.  
   Make sure that you use the appropriate type of join to ensure that races without MVPs are still included in the results.
*/

-- Write your Race View here
PRINT 'Creating Race View'

CREATE VIEW raceView AS 
SELECT race.id, race.dateOfRace, race.raceType, raceType.name AS raceTypeName, race.course, course.name AS courseName, race.team, team.name AS teamName, race.observer, obs.firstName + ' ' + obs.surname AS observer_name, race.mvp, mvp.firstName + ' ' + mvp.surname AS mvp_name, race.pointsPenalised, race.finalScore + race.pointsPenalised AS unpenalised_score, race.finalScore
FROM race
INNER JOIN raceType
    ON race.raceType = raceType.id
    INNER JOIN course
        ON race.course = course.id
        INNER JOIN team
            ON race.team = team.id
            LEFT OUTER JOIN player AS mvp
                ON race.mvp = mvp.id
                LEFT OUTER JOIN player AS obs
                    ON race.observer = obs.id;
GO 

SELECT * 
FROM playerView

SELECT *
FROM raceView


/* Additional Information:
   The views are very convenient replacements for the tables they represent, as they include the names and calculated values that you will often need in queries.
   You are very much encouraged to use the views to simplify the queries that follow.  You can use a view in a SELECT statement in exactly the same way as you can use a table.

   If you wish to create additional views to simplify the queries which follow, include them in this file.
*/

当我运行每个 CREATE VIEW分开,它似乎正确运行它没有错误。但是当我尝试运行整个脚本时,它给了我这个错误。

Msg 111, Level 15, State 1, Line 20
'CREATE VIEW' must be the first statement in a query batch.
Msg 111, Level 15, State 1, Line 15
'CREATE VIEW' must be the first statement in a query batch.
Msg 208, Level 16, State 1, Line 2
Invalid object name 'playerView'.



在尝试运行此脚本之前,我首先删除数据库,重新创建表,填充它们,然后运行此脚本。

任何想法我哪里出错了?

最佳答案

GO之后 PRINT 'Creating Player View'它应该工作:

PRINT 'Creating Player View'
GO

CREATE VIEW playerView AS

关于sql - “CREATE VIEW”必须是查询批处理中的第一条语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13340332/

相关文章:

mysql - T-SQL 中 DATE 类型变量的 LIKE 运算符

c# - 3 位货币代码到货币符号

sql - 单列与多列索引的性能开销

c# - SQL Server 2008 中的空间数据/地理、OR 映射器和 C#

MySQL查询,从一个表中查找并插入到第二个表中

mysql - 组前选择顺序

sql-server - 如何断开sql server中除sa之外的所有用户?

SQL Order By 无法正常工作

mysql合并两个表的数据

php - 数据库不会用 mysqli 第二次更新