case when语句后的表达式

SQL中Case When语句的语法如下

Simple CASE expression: 
CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 

Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

其中result_expression按理说应该是任意有效的表达式,查询了msdn也是如此说。可今天用这个语句时,想在when后面写一个简单的select语句,居然报错了。

试了许久,后来想要不加个括号试试,然后就成功了。

CASE od.ObjectType
    WHEN 1 THEN(SELECT TOP 1 StructureName FROM TBL_StationStructure WHERE StructureType=2)
    WHEN 2 THEN (SELECT TOP 1 StructureName FROM TBL_StationStructure WHERE StructureId=od.ObjectId)
END
    
原文地址:https://www.cnblogs.com/harryhan1983/p/4456429.html