【发布时间】:2018-05-09 10:36:53
【问题描述】:
我的数据库存储每月向不同供应商支付的款项。我正在尝试计算供应商薪酬的最新同比百分比差异。我的代码不断出错,不知道如何完成此查询。最近的付款(排名最高)应该是等式的 ((new-old)/old ) * 100 部分中的“新”因素。
理想结果:
A公司| 2015 | 400 美元 | 0%
A公司| 2016 | 400 美元 | 0%
A公司| 2017 | 800 美元 | 100%
B公司| 2014 | 20 美元 | 0%
B公司| 2015 | 30 美元 | 50%
B公司| 2016 | 15 美元 | -50%
B公司| 2017 | 30 美元 | 100%
我目前的结果:
公司名称 |年份 |付款1 |付款2
A公司| 2015 | 400 美元 | 400 美元
A公司| 2016 | 400 美元 | $400
A公司| 2017 | 800 美元 | 800 美元
B公司| 2014 | 20 美元 | $20
B公司| 2015 | 30 美元 | $30
B公司| 2016 | 15 美元 | $15
B公司| 2017 | 30 美元 | $30
这是我的查询:
SELECT
[VENDOR_ID]
,YEAR([PMT_DATE]) as "YEAR"
,SUM([PMT_PER_MONTH]) as "PAYMENT"
,SUM([PMT_PER_MONTH]) as “PAYMENT 2”
,RANK() OVER ( PARTITION BY [VENDOR_ID]
ORDER BY YEAR([PMT_DATE]) ASC ) AS RANKNUM
FROM [dbo].[VendorPaymentTracker]
WHERE CAST ([PMT_DATE] as DATE) between '2012-01-01' and '2017-12-31'
GROUP BY [VENDOR_ID], year([PMT_DATE]), [PMT_PER_MONTH]
)
SELECT [VENDOR_ID], [YEAR], [PAYMENT], [PAYMENT 2]
-- ,round(([PAYMENT] – [PAYMENT 2] / [PAYMENT 2]) * 100)DIFF_PERCENT
FROM CTE
【问题讨论】:
标签: sql sql-server