我在Oracle表是这样的SQL从行数据与空选择最小值值
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,而不是空。 我需要找到Col1中,col2的,COL3的最小值忽略空或0,由上校减去填充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
)
我刚刚在我的select查询中包含case语句。所有列值都从另一个查询填充。
如果所有三列都为空(或0)会发生什么? – 2012-08-17 16:48:12
50 - 40 = -10是否是错字? – 2012-08-17 16:54:52
@tony -yes错字。 – jero 2012-08-17 17:03:01