我正在使用双重句子来根据同一个表中2个其他列中可用的2个条件从表中的列获取值,否则(否则)该函数在null为0时为null它是0。
代码示例如下:
CASE CODE
WHEN 'ABC'
CASE NAME WHEN 'XYZ'
THEN 'VALUE'
ELSE NULL
END
ELSE NULL
END
问题是如果我在else之后使用NULL然后它将所有(空值和值都为0)作为NULL,或者如果我在ELSE之后使用0而不是NULL,那么null和0值都给出为0。 我试图用很多方式写这个句子,但我不知道它不起作用。希望有人可以给我一些很好的解决方案。
答案 0 :(得分:3)
CASE WHEN CODE = 'ABC' AND NAME = 'XYZ' THEN 'VALUE' ELSE NULL END
答案 1 :(得分:0)
我相信你想要:
CASE WHEN CODE = 'ABC' AND NAME = 'XYZ' THEN 'VALUE' ELSE NULL END
CASE语句的这种结构比在WHEN之前粘贴字段名称更灵活。
答案 2 :(得分: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)
但是,我认为这相当于原始嵌套的两个案例版本。