1

我正在使用双案例语句从表中的列中获取一个值,该值基于同一表中其他 2 个列中可用的 2 个条件,否则(否则)该函数在为 null 时应为 null 或在为 0 时为 0 .

代码示例如下:

CASE CODE 
    WHEN 'ABC' 
        CASE NAME WHEN 'XYZ' 
        THEN 'VALUE' 
        ELSE NULL 
        END
    ELSE NULL 
END

问题是,如果我在 else 之后使用 NULL ,那么它会将所有(null 值和带有 0 的值)作为 NULL ,或者如果我在 ELSE 之后使用 0 而不是 NULL ,那么 null 和 0 值都被给出为 0 。我已经尝试以多种方式写这句话,但我不知道它不起作用。希望有人能给我一些好的解决方案。

4

3 回答 3

3
CASE WHEN CODE = 'ABC' AND NAME = 'XYZ' THEN 'VALUE' ELSE NULL END
于 2013-06-04T19:06:03.337 回答
0

我相信你想要:

CASE WHEN CODE = 'ABC' AND NAME = 'XYZ' THEN 'VALUE' ELSE NULL END

CASE 语句的这种结构比在 WHEN 之前粘贴字段名称更灵活。

于 2013-06-04T19:06:10.280 回答
0

你想做这样的事情吗?

(CASE when CODE =  'ABC' and NAME = 'XYZ' 
      THEN 'VALUE' 
      when code = '0' or name = '0'
      then '0'
      ELSE NULL 
 end)

或者可能是这样(基于您试图从列中获取某些内容的事实):

(CASE when CODE =  'ABC' and NAME = 'XYZ' 
      THEN value
      when value is NULL or value = 0
      then value
      ELSE NULL 
 end)

根据您的评论,我认为这将起作用:

(CASE when CODE =  'ABC' and NAME = 'XYZ' 
      THEN value
      ELSE NULL 
 end)

或者是这样的:

(CASE when CODE =  'ABC' and NAME = 'XYZ' and value <> '0'
      THEN 'value'
      when  CODE =  'ABC' and NAME = 'XYZ' and value = '0'
      then '0'
      ELSE NULL 
 end)

但是,我认为这相当于您原来的嵌套两例版本。

于 2013-06-04T19:07:29.420 回答