与昨天的问题相同,已成功回答,但问题不同。我有两个值1和0,需要为它们计算百分比变化。根据该网站http://www.percent-change.com/index.php?y1=1&y2=0,介于1和0之间的百分比变化为-100%。根据建议的公式((((y2- y1))/ y1),我的代码如下所示。
DefinedYearVSPriorYearIndividual = ((( CTEDefinedYear.IndividualCases - CTEPreviousYear.IndividualCasesLastYear ))
/ ( CTEPreviousYear.IndividualCasesLastYear ) ) * 100
返回NULL。
两个数字是
CTEDefinedYear.IndividualCases = 1
CTEPreviousYear.IndividualCasesLastYear = 0
期望的结果应该是-100%。
有人可以看到我在做什么吗?
答案 0 :(得分:0)
这是答案。
it('max value testing', () => {
const FilterPriceObject = new Constructor().$mount()
FilterPriceObject.setMaxPricePerson()
expect(FilterPriceObject.maxPricePerPerson).to.equal(2001)
})
输出为-100。您错过了* 100部分。
答案 1 :(得分:0)
在您的情况下,您切换了变量。附带的公式是正确的。
select ((0 - 1) / 1)*100;
但是您使用了select ((1 - 0) / 0)*100;
所以,您会得到一个错误:
Msg 8134, Level 16, State 1, Line 1
Divide by zero error encountered.
答案 2 :(得分:0)
您必须使用CASE逻辑在除法侧处理0,以避免除以零错误。
DECLARE @CTEDefinedYear_IndividualCases INT = 1
DECLARE @CTEPreviousYear_IndividualCasesLastYear INT = 0
SELECT ((@CTEDefinedYear_IndividualCases - @CTEPreviousYear_IndividualCasesLastYear) / (CASE WHEN @CTEPreviousYear_IndividualCasesLastYear = 0 THEN 1 ELSE @CTEPreviousYear_IndividualCasesLastYear END)) * 100
答案 3 :(得分:0)
使其与该代码一起使用。
DefinedYearVSPriorYearIndividual = ISNULL(100.0 *
(ISNULL(CTEDefinedYear.IndividualCases,0)
- ISNULL(CTEPreviousYear.IndividualCasesLastYear,0))
/ NULLIF(CTEPreviousYear.IndividualCasesLastYear,0),0)