我陷入了需要两列之间存在百分比差异的情况,例如:我有“ 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
答案 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;