我是SQL脚本的新手。我试图找出一个设计问题,涉及一些算术计算。
我有两个表temp1和temp2有两列 帐号,(两个表中共同) balance(浮点数据类型)。
我的另一个问题是,如果特定字段中的值除以0,sql如何处理计算?
任何帮助,都会让我开始。
由于
我尝试了以下内容:
SELECT T1.AcountNo, T1.Balance, T2.Balance,
T1.Balance/CASE T2.Balance WHEN 0 THEN NULL END)
FROM Temp1 T1, Temp2 T2
WHERE
T1.AccountNo = T2.AccountNo
AND
((T1.Balance / T2.Balance > 1.1) OR
(T1.Balance / T2.Balance < 0.9))
但我仍然无法规避零除数问题。
答案 0 :(得分:0)
对于第一个查询,我会使用类似的东西,它打印两个余额的比率:
SELECT T1.AcountNo, T1.Balance, T2.Balance, T1.Balance / T2.Balance
FROM Temp1 T1, Temp2 T2
WHERE
T1.AccountNo = T2.AccountNo
对于第二个查询,我会使用类似这样的东西,它返回差异超过10%的所有帐户:
SELECT T1.AcountNo, T1.Balance, T2.Balance, T1.Balance / T2.Balance
FROM Temp1 T1, Temp2 T2
WHERE
T1.AccountNo = T2.AccountNo
AND
((T1.Balance / T2.Balance > 1.1)
OR
(T1.Balance / T2.Balance < 0.9))
答案 1 :(得分:0)
SELECT T1.AcountNo, T1.Balance, T2.Balance,
DECODE( NVL(T2.Balance, 0), 0, 0, T1.Balance, T2.Balance)
FROM Temp1 T1, Temp2 T2
WHERE T1.AccountNo = T2.AccountNo
AND ((T1.Balance / T2.Balance > 1.1) OR (T1.Balance / T2.Balance < 0.9))
˙DECODE`函数的定义如下:
decode( expression , search , result [, search , result]... [, default] )
所以,在上面的代码中它的工作原理如下: