我正在寻找每个月产品的余额运行百分比变化。月份字段代表每个月的最后一个工作日。余额趋势分析
我一直在使用下面的公共表表达式的尝试:
declare @tab table
(DATE DATETIME,
BALANCE DECIMAL (38,8),
PDCT_TYPE_C VARCHAR (5),
EXCL_C VARCHAR (1)
)
INSERT INTO @tab
SELECT
DATE,
SUM(BALANCE),
PDCT_TYPE_C,
RC_EXCL_C
from ERIC..RC_XPOS
WHERE RC_EXCL_C IS NULL AND PDCT_TYPE_C = 'hln'
GROUP BY XPOS_D,PDCT_TYPE_C,RC_EXCL_C
;
with cte as
(
select
row_number() over (order by PDCT_TYPE_C,DATE) rn,
DATE,
BALANCE,
PDCT_TYPE_C
from @tab
)
select
DATE,
BALANCE,
(((select BALANCE from cte where cte.rn=1))-(select BALANCE from cte where cte.rn=t1.rn+1)) as 'EAD MOM Difference',
(((select BALANCE from cte where cte.rn=1))/(select BALANCE from cte where cte.rn=t1.rn+1)) as 'EAD MOM % Difference',
PDCT_TYPE_C
from cte as t1
这是工作正常,如果有一个产品,这个问题虽然是如果有很多产品只是计算该行的百分比变化之前 - 当存在多种产品类型时,这可能是不同的产品。
有谁知道如何解决这个问题?
我希望像下面的结果。我有余额,日期和产品类型字段可用,但希望计算余额差额和余额变化,而不必根据上述行进行行分区和计算。
如果您有任何问题,请让我知道。
期望的结果:
Date | Balance | Balance Difference | Balance % Change | Product Type
---------------------------------------------------------------
30/06/2017 | 4,000,000.00 | -- | -- | AP
30/06/2017 | 2,000,000.00 | -- | -- | ZA
30/06/2017 | 1,000,000.00 | -- | -- | LP
31/07/2017 | 5,000,000.00 |1,000,000.00 | 0.25 | AP
31/07/2017 | 2,000,000.00 |1,000,000.00 | 0.5 | LP
31/07/2017 | 1,000,000.00 |-1,000,000.00 | -0.5 | ZA
您运行的是哪个版本的SQL Server? –