下午好,
我目前正在处理一些postgresql代码,并将其转换为sql (大多数情况下,如果它非常简单),但我遇到了一个包含数组的case语句,并且找不出正确的语法,因为我以前从未见过以这种方式使用的case语句。
我已经做了一个简单的例子来说明我正在尝试做什么,但它仍然抛出了一个语法错误:
Select field3, field 4,
Case
When field in (1, 3, 7) then 1
When field in (2, 4, 6) then 2
When field in (5, 9) then 3
When field is null or ' ' then 4
Else
Case
When field2 = x then 1
When field2 = y then 2
Else End
End as fieldname这是原始代码,这样你就可以看到我正在编辑它的来源和目标。case语句(就我之前提到的情况而言,我从未以这种方式使用过case )使用2个字段来获得所需的结果。请注意,这不是我最初写的,只是将它从postgresql移植到t-sql。
CASE
WHEN rank IN (1,7,9) THEN '1'
WHEN rank IN (2,5,10) THEN '2'
WHEN rank IN (3,6) THEN '3'
WHEN rank IN (4,8) THEN '4'
WHEN tier IS NULL OR tier = '' THEN 'N/A' ELSE
CASE WHEN tier = 'HE' THEN '3'
WHEN tier = 'ME' THEN '2'
WHEN tier = 'LE' THEN '1' END
END AS tier在研究了下面的答案(其中一个是我的打字错误)之后,我现在得到了一个关于"Else End“子句的语法错误。
我修改了问题,声明这是一个关于嵌套case语句的问题,而不是一个数组谢谢
发布于 2011-03-23 03:15:34
Case
When field in (1, 3, 7) then 1
When field in (2, 4, 6) then 2
When field in (5, 9) then 3
When field is null or ' ' then Case
When field2 = x then 1
When field2 = y then 2
End --inner case
Else null
End as fieldname 在这个例子中我是不是用错了“数组”这个词?
是。
发布于 2011-03-23 03:15:40
对于Exse.中的内部case语句,您缺少了THEN。
发布于 2011-03-23 03:38:15
ELSE子句看起来是多余的:
CASE
WHEN field IN (1, 3, 7) THEN 1
WHEN field IN (2, 4, 6) THEN 2
WHEN field IN (5, 9) THEN 3
WHEN field IS NULL THEN 4
WHEN field2 = x THEN 1
WHEN field2 = y THEN 2
END AS fieldnamehttps://stackoverflow.com/questions/5396533
复制相似问题