我在这里待了大约2个小时。我正在尝试计算两个金额之间的百分比变化。这是当前代码。
RejectedVsSubmittedSum = ((CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END
-ISNULL(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0))
/NULLIF(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0))
* 100
此行返回225000。
CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END
此行返回25000。
ISNULL(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0)
部门。
NULLIF(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0)
然后我乘以100。
因此225000-25000/25000 * 100返回 800 。这就是我要返回的内容,但是基于此网站http://www.percent-change.com/index.php?y1=225000&y2=25000,我的结果是错误的,我应该返回-88.88888888%。
我在SQL中进行这些计算没有任何实际经验,因此我认为网站是正确的。有人可以看看我是否真的在做错什么吗?
我已经问过这个Calculate percentage between two values,但是现在我使用的是一组不同的数字,我现在使用的是金额而不是计数。我尝试使用相同的逻辑(因为这样做很有意义),但似乎返回的结果是错误的。
答案 0 :(得分:0)
根据公式((y2 - y1) / y1)*100
,您的查询应如下所示。
RejectedVsSubmittedSum = ( ( (ISNULL(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0) )
- (CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END) )
/ (CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END) ) * 100
y1: CASE WHEN COUNT(ClaimMain.ClaimNumber) > 0 THEN SUM(PCover.SumAssured) END
y2: ISNULL(SUM(CASE ClaimMain.CurrentStatus WHEN 25 THEN PCover.SumAssured END),0)