表中的两列是INT,SA.SalesQuantity和SA.RefundQuantity
我想使用案例陈述计算2107和2016之间的差异,如下所示:
(SUM(CASE WHEN SA.FISCALYEAR = 2017 AND SA.FISCALWEEK = 22
THEN SA.SalesQuantity-SA.RefundQuantity END )
/ SUM(CASE WHEN SA.FISCALYEAR = 2016 AND SA.FISCALWEEK = 22
THEN SA.SalesQuantity-SA.RefundQuantity END ))-1
AS 'SaleQTY_Var'
如何将结果作为小数而不是INT返回?
答案 0 :(得分:2)
Int/Int = Int
因此将 numerator 或分母更改为Decimal值以获得带小数值的结果。我将分子乘以1.0
将其转换为十进制
(SUM(CASE WHEN SA.FISCALYEAR = 2017 AND SA.FISCALWEEK = 22
THEN SA.SalesQuantity-SA.RefundQuantity * 1.0 END )
/
SUM(CASE WHEN SA.FISCALYEAR = 2016 AND SA.FISCALWEEK = 22
THEN SA.SalesQuantity-SA.RefundQuantity END ))-1
AS 'SaleQTY_Var'
答案 1 :(得分:0)
只需在计算后转换值:
CONVERT(DECIMAL(18, 4)
(SUM(CASE WHEN SA.FISCALYEAR = 2017 AND SA.FISCALWEEK = 22
THEN SA.SalesQuantity - SA.RefundQuantity END )*1.0
/ SUM(CASE WHEN SA.FISCALYEAR = 2016 AND SA.FISCALWEEK = 22
THEN SA.SalesQuantity - SA.RefundQuantity END )) - 1
) AS SaleQTY_Var
答案 2 :(得分:0)
另一种使用CAST
方法将一个操作数转换为十进制类型
CAST(
(SUM(CASE WHEN SA.FISCALYEAR = 2017 AND SA.FISCALWEEK = 22
THEN SA.SalesQuantity-SA.RefundQuantityEND) AS DECIMAL)
/
SUM(CASE WHEN SA.FISCALYEAR = 2016 AND SA.FISCALWEEK = 22
THEN SA.SalesQuantity-SA.RefundQuantity END )) - 1
AS 'SaleQTY_Var'