T-SQL - 案例陈述错误

mar*_*ark 1 t-sql sql-server sql-server-2005-express

USE NORTHWIND;
GO
SELECT SHIPCOUNTRY,[ORDERS_ID] = 
CASE ORDERID
WHEN ORDERID = 10300
THEN 'I AM FROM 10300'
WHEN ORDERID = 10400
THEN 'I AM FROM 10400'
WHEN ORDERID = 10500
THEN 'I AM FROM 10500'
ELSE 'I AM OUT OF RANGE'
END
FROM ORDERS;
GO
Run Code Online (Sandbox Code Playgroud)

错误 - 消息102,级别15,状态1,行3'='附近的语法不正确.

如果您的SQL Server中有northwind数据库,则可以执行此查询.

我不明白问题出在哪里.谁能帮我解决这个问题?

小智 5

试试这个:

USE NORTHWIND; 
GO 
SELECT SHIPCOUNTRY,  
CASE ORDERID 
WHEN 10300 
THEN 'I AM FROM 10300' 
WHEN 10400 
THEN 'I AM FROM 10400' 
WHEN 10500 
THEN 'I AM FROM 10500' 
ELSE 'I AM OUT OF RANGE' 
END as OrdersId
FROM ORDERS; 
GO 
Run Code Online (Sandbox Code Playgroud)

如果您在初始CASE xxxx语句中明确,则不能在WHEN子句中重复该变量.这同样有效:

USE NORTHWIND; 
GO 
SELECT SHIPCOUNTRY, 
CASE
WHEN ORDERID = 10300 
THEN 'I AM FROM 10300' 
WHEN ORDERID = 10400 
THEN 'I AM FROM 10400' 
WHEN ORDERID = 10500 
THEN 'I AM FROM 10500' 
ELSE 'I AM OUT OF RANGE' 
END as OrdersId
FROM ORDERS; 
GO 
Run Code Online (Sandbox Code Playgroud)

您也无法分配这样的别名.阻止AS后使用关键字CASE.

编辑:根据Adam Wenger的评论,您确实可以[alias] = fieldname在查询中编写别名.谢谢你的纠正!