我在 Oracle 中的表是这样的
Col Col1 Col2 Col3 ColR
-- ---- ---- ---- ----
30 73 40 null -10
60 32 null 20 40
90 80 null null 10
80 45 81 30 50
我也可以在上面的列中设置 0 而不是 null。我需要从 Col1、Col2、Col3 中找到最小值,忽略 null 或 0,并通过从 Col 中减去来填充 ColR。
编辑:我写了一个 CASE 语句,由于表中的空值而不起作用。
SELECT col,col1,col2,col3,
CASE
WHEN Col1 < Col2 AND Col1 < Col3
THEN Col - Col1
WHEN Col2 < Col1 AND Col2 < Col3
THEN Col - Col2
ELSE Col - Col3
END ColR
FROM
(SELECT col,col1,
CASE
WHEN col22 IS NULL
THEN NULL( i can also SET TO 0 but it will mess WITH my other calculation TO find MIN)
ELSE ROUND( 100* ( (col22) / (col44)))
END col2 ,
CASE
WHEN col33 IS NULL
THEN NULL
ELSE ROUND( 100* ( (col33) / (col44)))
END col3
FROM TABLE
)
我刚刚在我的选择查询中包含了 case 语句。所有的列值都是从另一个查询中填充的。