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