Sql 计算不同日期两个值之间的百分比差异
我已经创建了一个查询,其中包含最新更改的金额,但我还想包括新金额与前一个金额的比较是增加还是减少,以及前一个金额与当前金额之间的百分比。 这是我的疑问:Sql 计算不同日期两个值之间的百分比差异,sql,Sql,我已经创建了一个查询,其中包含最新更改的金额,但我还想包括新金额与前一个金额的比较是增加还是减少,以及前一个金额与当前金额之间的百分比。 这是我的疑问: SELECT RATE.FK_ORGA_FRAN, RATE.FK_ORGA_OPER, RATE.FED, RATE.FK_RCOM, RATE.FK_PROD, RATE.FK_CDIR, RATE.FK_TIE
SELECT
RATE.FK_ORGA_FRAN,
RATE.FK_ORGA_OPER,
RATE.FED,
RATE.FK_RCOM,
RATE.FK_PROD,
RATE.FK_CDIR,
RATE.FK_TIER,
RATE.FK_TPRE,
RATE.FK_CURR,
RATE_STEP.UNIT_COST,
RATE.FK_CURR
from RATE , RATE_STEP
WHERE
RATE.FK_ORGA_FRAN = RATE_STEP.FK_ORGA_FRAN AND
RATE.FK_ORGA_OPER = RATE_STEP.FK_ORGA_OPER AND
RATE.FK_RCOM = RATE_STEP.FK_RCOM AND
RATE.FK_PROD = RATE_STEP.FK_PROD AND
RATE.FK_CDIR = RATE_STEP.FK_CDIR AND
RATE.FK_TIER = RATE_STEP.FK_TIER AND
RATE.FK_TPRE = RATE_STEP.FK_TPRE AND
RATE.FK_PMAT = RATE_STEP.FK_PMAT AND
RATE.FED = RATE_STEP.FK_RATE_FED AND
RATE.FED BETWEEN (SYSDATE) -16 AND (SYSDATE)
你能帮忙吗
非常感谢
Fred假设您使用的是oracle SQL 样本数据如下:
DT Rate
14-JAN-14 19
15-JAN-14 11
17-JAN-14 14
18-JAN-14 15
19-JAN-14 11
21-JAN-14 12
23-JAN-14 15
create table rate_log (dt date, rate number(5));
使用下面的查询并对其应用类似的逻辑
WITH data AS
( SELECT rownum rn, t.* FROM
( SELECT dt, rate FROM rate_log ORDER BY dt
)t
)
SELECT d1.dt,
d1.rate,
ROUND(( d1.rate - d2.rate ) * 100 / d1.rate, 2 )diff_perc,
CASE
WHEN(( d1.rate - d2.rate ) < 0 )
THEN 'Increase'
ELSE 'Decrease'
END change
FROM data d1,
data d2
WHERE( d1.rn - 1 ) =( d2.rn(+) )
ORDER BY d1.dt;
如能对专栏进行更多解释,并提供您正在使用的dbms,将不胜感激。