2016-05-14 3 views
0

を選択し、この選択:SQLは、私が持っている

SELECT 
*, 
(SELECT some_value FROM other_table) as a1, 
(SELECT some_value FROM other_table2) as a2 
FROM some_table; 

a2の値A1を使用して、このように彼らと仕事をする方法はありますか?

SELECT 
*, 
(SELECT some_value FROM other_table) as a1, 
(SELECT some_value FROM other_table2) as a2, 
a1+a2, 
a1/a2 
FROM some_table; 

私はこれをしなければならない場合、それは良いではありませんので、これらのサブクエリはかなり大きいです:

SELECT 
*, 
(SELECT some_value FROM other_table) as a1, 
(SELECT some_value FROM other_table2) as a2, 
(SELECT some_value FROM other_table)+(SELECT some_value FROM other_table), 
SELECT some_value FROM other_table)/(SELECT some_value FROM other_table2) 
FROM some_table; 

答えて

1

Oracleで使用WITHを試してみてください。非常に役に立ちます。 Link

WITH a1 AS (SELECT some_value FROM other_table), 
a2 AS (SELECT some_value FROM other_table2) 
SELECT * 
FROM some_table t 
JOIN a1 ON a1.key = t.key 
JOIN a2 ON a2.key = t.key 
0

SELECT t.*, 
     a1.some_value + a2.some_value, 
     a1.some_value/a2.some_value 
FROM some_table t 
cross join (SELECT some_value FROM other_table) as a1 
cross join (SELECT some_value FROM other_table2) as a2 
0

スカラー変数のセットを使用すると、その後、残りのすべてのクエリに参加する1つの行のクエリとして導入することができます。

WITH x AS 
(SELECT 
    (SELECT some_value FROM other_table) as a1, 
    (SELECT some_value FROM other_table2) as a2 
    FROM dual 
) 
SELECT t.*, x.a1 + x.a2 , x.a1 * x.a2 
FROM some_table t 
CROSS JOIN x; 
関連する問題