Sql server 使用CASE语句创建视图

Sql server 使用CASE语句创建视图,sql-server,tsql,Sql Server,Tsql,我使用的是WideWorldImporters数据库,其中包含一个二进制值表,显示某人是否是员工、是否可以登录以及是否是销售人员。我试图创建一个视图来显示更友好的数据版本 以下是应用程序中的相关字段。人员表: 这是我尝试的代码: CREATE VIEW Application.PeopleEmployeeStatus1 AS SELECT PersonId, FullName, IsPermittedToLogon, IsEmployee, IsSa

我使用的是WideWorldImporters数据库,其中包含一个二进制值表,显示某人是否是员工、是否可以登录以及是否是销售人员。我试图创建一个视图来显示更友好的数据版本

以下是应用程序中的相关字段。人员表:

这是我尝试的代码:

CREATE VIEW Application.PeopleEmployeeStatus1
AS
    SELECT 
        PersonId, FullName, 
        IsPermittedToLogon, IsEmployee, IsSalesPerson,
        CASE 
            WHEN IsPermittedToLogon = 1 
               THEN 'Can Logon'
               ELSE 'Can''t Logon' 
        END AS LogonRights,
        CASE 
            WHEN IsEmployee = 1 AND IsSalesPerson = 1
               THEN 'SalesPerson'
            WHEN IsEmployee = 1
               THEN 'Regular'
            ELSE 'Not Employee' 
        END AS EmployeeType
    FROM 
        Application.People;
我收到了错误消息:

Msg 156,级别15,状态1,程序PeopleEmployeeStatus1,第14行[批处理起始行0]
关键字“SELECT”附近的语法不正确


可能涉及多个陈述:

-- here goes batch separator
GO

CREATE VIEW Application.PeopleEmployeeStatus1
AS
SELECT PersonId, FullName, 
    IsPermittedToLogon, IsEmployee, IsSalesPerson,
    CASE WHEN IsPermittedToLogon = 1 THEN 'Can Logon'
        ELSE 'Can''t Logon' END AS LogonRights,
    CASE WHEN IsEmployee = 1 and IsSalesPerson = 1
            THEN 'SalesPerson'
        WHEN IsEmployee = 1
            THEN 'Regular'
        ELSE 'Not Employee' END AS EmployeeType
FROM Application.People;
GO 

可能涉及多个陈述:

-- here goes batch separator
GO

CREATE VIEW Application.PeopleEmployeeStatus1
AS
SELECT PersonId, FullName, 
    IsPermittedToLogon, IsEmployee, IsSalesPerson,
    CASE WHEN IsPermittedToLogon = 1 THEN 'Can Logon'
        ELSE 'Can''t Logon' END AS LogonRights,
    CASE WHEN IsEmployee = 1 and IsSalesPerson = 1
            THEN 'SalesPerson'
        WHEN IsEmployee = 1
            THEN 'Regular'
        ELSE 'Not Employee' END AS EmployeeType
FROM Application.People;
GO 

你的选择在我看来很好,一定是出了什么事。该视图名称有效吗?当我创建视图,然后从Application.PeopleEmployeeStatus1执行query
SELECT*时,该视图有效并起作用。我猜你还有其他问题没有告诉我们。你的选择在我看来很好,一定是出了什么事。该视图名称有效吗?当我创建视图,然后从Application.PeopleEmployeeStatus1执行query
SELECT*时,该视图有效并起作用。我猜你还有其他问题没有告诉我们。