如何调整此SQL以仅执行一次算术计算

Rah*_*hul 2 sql t-sql database

说我有这样的查询:

   select ((amount1 - amount2)/ amount1) as chg from t1
   where
        ((amount1 - amount2)/ amount1) > 1 OR
        ((amount1 - amount2)/ amount1) < 0.3
Run Code Online (Sandbox Code Playgroud)

有没有办法我只能执行一次算术计算,而不是像上面的查询那样进行三次?

编辑:我不确定数据库是否自动优化查询只进行一次这样的计算?我在Sybase上使用T-SQL.

Chr*_*ris 10

从概念上讲,您可以从计算中进行选择,即:

select
    calc.amt
from
    (select (amt1 - amt2) / amt1 as amt from #tmp) calc
where
    calc.amt > 1 OR calc.amt < 0.3
Run Code Online (Sandbox Code Playgroud)

如果SQL无论如何都会将你的代码优化为类似代码,那么不确定是不是最重要的 - 从基本临时表中查询我的查询似乎表明它们以相同的方式执行.