Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用IN子句时的大小写_Sql_Oracle_Select - Fatal编程技术网

Sql 使用IN子句时的大小写

Sql 使用IN子句时的大小写,sql,oracle,select,Sql,Oracle,Select,根据select语句所针对的列的值,我需要一个查询来返回特定列的特定结果 如果该列是以下列之一:I,D,U,那么我想返回Y 如果列是以下列之一:N,E,D,那么我想返回N else : I want to return NULL 我写了下面的声明,但它不起作用 SELECT HIERARCHY_TYPE, NODE_ID, NODE_TYPE, NODE_NAME,

根据select语句所针对的列的值,我需要一个查询来返回特定列的特定结果

如果该列是以下列之一:I,D,U,那么我想返回Y

如果列是以下列之一:N,E,D,那么我想返回N

                      else : I want to return NULL
我写了下面的声明,但它不起作用

   SELECT HIERARCHY_TYPE,
          NODE_ID,
          NODE_TYPE,
          NODE_NAME,
          NODE_LEVEL,
          PREFERRED_ALIAS,
          PARENT_NODE_ID,
          CASE ACTIVE_INDICATOR 
             WHEN ('I' or 'U' or 'Y') THEN 'Y'
             WHEN ('D' or 'E' or 'N') THEN 'N'
             ELSE NULL
          END
     FROM MV_HIERARCHY MV;

有没有一种方法可以重写它,而不必对每个可能的值使用多个OR子句?

我会使用
中的
运算符:

SELECT HIERARCHY_TYPE,
NODE_ID,
NODE_TYPE,
NODE_NAME,
NODE_LEVEL,
PREFERRED_ALIAS,
PARENT_NODE_ID,
CASE 
  WHEN ACTIVE_INDICATOR IN ('I','U','Y') THEN 'Y'
  WHEN ACTIVE_INDICATOR IN ('D','E','N') THEN 'N'
ELSE NULL
END AS ACTIVE_INDICATOR
FROM MV_HIERARCHY MV;

我会在
操作符中使用

SELECT HIERARCHY_TYPE,
NODE_ID,
NODE_TYPE,
NODE_NAME,
NODE_LEVEL,
PREFERRED_ALIAS,
PARENT_NODE_ID,
CASE 
  WHEN ACTIVE_INDICATOR IN ('I','U','Y') THEN 'Y'
  WHEN ACTIVE_INDICATOR IN ('D','E','N') THEN 'N'
ELSE NULL
END AS ACTIVE_INDICATOR
FROM MV_HIERARCHY MV;
您必须重复
活动\u指示器
,因为我认为(可能是错误的)您可以使用该语法

CASE <field>
   WHEN IN()
案例
在()中时
但是你可以用

CASE
  WHEN <field> IN()
案例
在()中时
您必须重复
活动\u指示器
,因为我认为(可能是错误的)您可以使用该语法

CASE <field>
   WHEN IN()
案例
在()中时
但是你可以用

CASE
  WHEN <field> IN()
案例
在()中时

有人建议将ACTIVE\u INDICATOR添加为列的新名称,您可以在
结束后添加
作为ACTIVE\u INDICATOR
。有人建议将ACTIVE\u INDICATOR添加为列的新名称,你可以通过在
结束后添加
作为活动指示器
来实现这一点。有人就是我X)是的,这就是它应该是什么样子。我只是对mjsqu的答案做了一个小改动。我在时编写了CASE ACTIVE INDICATOR,但它不起作用。我应该做的是,我应该先把所有的内容都写进去,然后给那一列起个名字:)+1我只想评论一下,ELSE子句是不必要的(不管怎样,默认值是NULL),但另一方面,它可能会增加清晰度。@TonyAndrews的确如此!是的,这就是它应该是的样子。我只是对mjsqu的答案做了一个小改动。我在时编写了CASE ACTIVE INDICATOR,但它不起作用。我应该做的是,我应该先把所有的内容都写进去,然后给那一列起个名字:)+1我只想评论一下,ELSE子句是不必要的(不管怎样,默认值是NULL),但另一方面,它可能会增加清晰度。@TonyAndrews的确如此!您正在尝试简单的大小写表达式。相反,您应该在这里使用搜索的大小写表达式。您正在尝试简单的大小写表达式。相反,您应该在这里使用搜索的大小写表达式。如果我是虐待狂,我肯定会用这个(X)如果我是虐待狂,我肯定会用这个(X)