计算两列之间的差异百分比作为结果中的单独列

时间:2018-07-12 03:47:00

标签: sql oracle

我陷入了需要两列之间存在百分比差异的情况,例如:我有“ AVERAGE_PRICE_2017 ”列和“ AVERAGE_PRICE_2016 ”列 值,现在我需要这两个值之间有多少百分比的差异。 现在的挑战是,差异结果可能为0或负数。 我在下面尝试过,但没有解决。

SELECT medicine_name,
  average_price_2017,
  average_price_2016,
  average_price_2017-average_price_2016 a,
  ROUND(a * 100.0 / AVERAGE_PRICE_2017, 1) AS Percent
FROM ST_COMPARE_ALL_4;

错误:

ORA-06553: PLS-306: wrong number or types of arguments in call to 'A'
06553. 00000 -  "PLS-%s: %s"
*Cause:    
*Action:
Error at Line: 14 Column: 7

1 个答案:

答案 0 :(得分:2)

您不能直接使用任何列的别名来填充另一列。相反,您应该在计算百分比时再次找到差异。尝试以下查询:

SELECT medicine_name,
  average_price_2017,
  average_price_2016,
  average_price_2017-average_price_2016 a,
  ROUND((average_price_2017-average_price_2016) * 100.0 / AVERAGE_PRICE_2017, 1) AS Percent
FROM ST_COMPARE_ALL_4;