、私の質問は:操作
select shape as "Shape",
codigo as "GeocodigoTo",
function(shape) as "X",
function(shape) as "Y",
**[X - Y] as "X - Y"**,
...
私は唯一のSELECT文で存在する2つの列を操作するにはどうすればよいですか?
Ps:私はこれをしたくありません:function(x) - function(y)。
WITH raw_data as
(shape as "Shape",
codigo as "GeocodigoTo",
function(shape) as "X",
function(shape) as "Y" FROM table)
SELECT d.*,X-Y as "X-Y" FROM raw_data;
二回の関数を呼び出す避けるということ:それはあなたの場合には、サブクエリを使用することができオラクルでは遅い
あなたはサブクエリーの仲間ですか? – Anand
あなたは2つの選択肢しかありません(Oracleでは、正しく理解すれば、あなたが望むことができる他のDB製品があります)。 1つは 'function(x)-function(y)'を繰り返すことです。オラクルは 'function(x)'と 'function(y) 'を2回計算しないほど賢明であることを願っています。あなたはそれが欲しくないと言った。もう1つのオプションは、サブクエリで 'X'と' Y'を選択し、次に 'X-Y' inと外部クエリを選択することです。 – mathguy
"*私はこれをしたくありません:function(x) - function(y)。それは遅くなります*" - これは関数に依存します。その関数が '確定的(deterministic) 'とマークされている場合、Oracleは、それを書き留める回数に関係なく、各行に対して一度だけコールします。 –