Oracle跨多个列检查并返回第一个非0.00
我的结果集中有三列Oracle跨多个列检查并返回第一个非0.00,oracle,plsql,decode,Oracle,Plsql,Decode,我的结果集中有三列 o.id o.value_one o.value_two o.value_three ---- ----------- ----------- ------------- 1 1.00 0.00 0.00 2 1.00 1.00 0.00 3 1.00 1.00 1.00 4
o.id o.value_one o.value_two o.value_three
---- ----------- ----------- -------------
1 1.00 0.00 0.00
2 1.00 1.00 0.00
3 1.00 1.00 1.00
4 0.00 1.00 1.00
5 0.00 0.00 1.00
6 0.00 0.00 0.00
我想比较所有三个值列,并返回不是0.00的列的值
所以我会回来
o.id o.new_value
---- -----------
1 1.00
2 1.00
3 1.00
4 1.00
5 1.00
谢谢你的帮助!
Chris您可以使用和的组合:
您可以使用和的组合: 不带所有表达式计算的工程
WorkW/O所有表达式求值。
您也可以考虑一个表达式,如:
<代码>最大值(O.ValueOne,O.ValueE2,O.ValueS3)
> P>您也可以考虑一个表达式,如:magest(o.value\u one,o.value\u two,o.value\u three)
对于id=6
,它不会返回1-三列值中没有一列不是0。是的,很抱歉,这是一个输入错误。对于id=6
,它不会返回1-三列值中没有一列不是0。是的,很抱歉,这是一个输入错误。
SELECT o.id, COALESCE(NULLIF(o.value_one, 0.0),
NULLIF(o.value_two, 0.0),
NULLIF(o.value_three, 0.0)) AS new_value
FROM Foo
select id,
decode(value_one, 0,
decode(value_two, 0
decode(value_three, 0, 0, value_three),
value_two),
value_one) new_value
from ...