Sql 使用IN子句时的大小写
根据select语句所针对的列的值,我需要一个查询来返回特定列的特定结果 如果该列是以下列之一:I,D,U,那么我想返回Y 如果列是以下列之一:N,E,D,那么我想返回NSql 使用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,
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)