首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL Case语句中正确使用嵌套Case语句

问在SQL Case语句中正确使用嵌套Case语句
EN

Stack Overflow用户
提问于 2011-03-23 03:11:09
回答 3查看 34.7K关注 0票数 6

下午好,

我目前正在处理一些postgresql代码,并将其转换为sql (大多数情况下,如果它非常简单),但我遇到了一个包含数组的case语句,并且找不出正确的语法,因为我以前从未见过以这种方式使用的case语句。

我已经做了一个简单的例子来说明我正在尝试做什么,但它仍然抛出了一个语法错误:

代码语言:javascript
复制
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。

代码语言:javascript
复制
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语句的问题,而不是一个数组谢谢

EN

回答 3

Stack Overflow用户

发布于 2011-03-23 03:15:34

代码语言:javascript
复制
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 

在这个例子中我是不是用错了“数组”这个词?

是。

票数 7
EN

Stack Overflow用户

发布于 2011-03-23 03:15:40

对于Exse.中的内部case语句,您缺少了THEN。

  • 上述CASE应写为END。
票数 2
EN

Stack Overflow用户

发布于 2011-03-23 03:38:15

ELSE子句看起来是多余的:

代码语言:javascript
复制
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 fieldname
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5396533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档