我在同一个表中有两列,这两列需要求和,得到差值,然后计算百分比?
SELECT sum([BillCount]) - sum([IssueCount]) as [Difference]
FROM Invoice
where [Year] = '2015'
在上面的查询中,我得到的差值为244234。现在,我需要通过将差值除以实际的账单数260918来计算百分比。
示例数据:
SELECT sum(BillCount) as bills, sum(IssueCount) as issues
FROM Invoice
where [Year] = '2015'
结果:票据: 260918期: 16684差额: 244234差额除以实际票据: 244234/260918 =0.93%:0.93x100=93.60%
我使用了从0到1的改变后的除数。但是我得到了许多行的百分比结果,比如每个单独的账单计数。有没有办法可以像我们在计算器中计算的那样,在一行中得到准确的百分比?谢谢。
发布于 2017-01-24 23:48:36
是像这样吗?
SELECT sum([BillCount]) - sum([IssueCount]) as [Difference],
(sum(IssueCount) - sum(BillCount)) / nullif(sum(BillCount), 0) as ptcdiff
FROM Invoice
where [Year] = '2015'
你会注意到我改变了减法的顺序。这使得它成为一个负面的变化,而不是一个积极的变化。如果你需要一个绝对的。更改,您只需在结果周围抛出abs()即可。如果这样做有意义,还可以将其烘焙到一个函数中。
declare
@pctOld float = 260918,
@pctNew float = 16684
select PctDiff = case when @PctNew is null or @PctOld is null then null
when @PctNew = null or @PctOld = null then null
when @PctNew = 0 and @PctOld = 0 then 0
when @PctNew = 0 and @PctOld > 0 then -100.00
when @PctNew >= 0 and @PctOld < 0 then null
when @PctNew < 0 and @PctOld > 0 then null
when @PctOld = 0 then null
else ((@PctNew - @PctOld) / abs(@PctOld)) * 100.0
end
发布于 2017-01-24 23:49:47
将当前表达式与SUM([BillCount])
聚合值相除
像这样的东西
select (sum([BillCount]) - sum([IssueCount])) / NULLIF(sum([BillCount]),0) * 100
FROM Invoice
where [Year] = '2015'
发布于 2017-01-24 23:54:49
像这样的子查询
Select Difference/nullif(sum(BIllCount), 1) From (SELECT sum([BillCount]) - sum([IssueCount]) as [Difference],
FROM Invoice
where [Year] = '2015') Per
https://stackoverflow.com/questions/41832378
复制相似问题