我有以下SQL查询:
SELECT
a.IA
, a.PC
, a.LC
, a.CXPevalCnt
, ((a.IA / nullif(a.CXPevalCnt,0))*0.35) as IAcalc
, ((a.LC / nullif(a.CXPevalCnt,0))*0.5) as legacalc
, ((a.PC / nullif(a.CXPevalCnt,0))*0.15) as pccalc
, (
((a.IA / nullif(a.CXPevalCnt,0))*0.35)
+ ((a.LC / nullif(a.CXPevalCnt,0))*0.5)
+ ((a.PC / nullif(a.CXPevalCnt,0))*0.15)
) as Compliance
FROM
(
SELECT
SUM(IA) as IA
, SUM(PC) as PC
, SUM(LC) as LC
, SUM(CXPevalcount) as CXPevalCnt
FROM
tblPLOps_Data
) as A
返回以下数据:
IA PC LC CXPevalCnt IAcalc legacalc pccalc Compliance
15 12 15 15 0.35 0.5 0 0.85
如果PC为12且CXPevlacnt为15,我无法弄清楚为什么在我的查询中我将它们加在一起时cxpevalcount为空,但仅适用于PC,而不是与IA或LC一起使用时。我已经通过许多不同方式对此查询进行了切分,并且无法找出问题
任何想法?
答案 0 :(得分:1)
因为你正在进行整数除法。 12/15 = 0.如果你想做准确的数学运算,你需要将其中一个乘以1.0或转换为强制sql进行数字除法。
((a.PC * 1.0) / nullif(a.CXPevalCnt, 0)) * 0.15 as pccalc
您也需要为其他列执行相同的操作。