2016-10-01 2 views
2

私はselect文に列を投影します。 (関係代数の意味での「プロジェクト」)。コードの重複を減らすことを目標として、where句の投影された列を参照する方法はありますか?それとももっと良い方法がありますか?投影された/選択された列を参照していますか?

例:

select 
    (A.Column + A.Column2) * 8 'Column' 
from A 
where 
    (A.Column + A.Column2) * 8 < 1000 

基本的に、私たちはテーブルで、「名前空間」されていると、列を考えるならば、私が求めていることは、(Aは、名前空間で、A.Columnは、名前空間の柱で​​あります)は、現在:そのテーブル自体のwhere節で現在選択している一時テーブルの名前空間を参照する方法はありますか?

答えて

2

もう1つの方法は、cte、共通テーブル式を使用することです。

with cte as(
    select (A.Column + A.Column2) * 8 as [Column] from A 
) 
Select * from cte 
Where [Column] < 1000 
2

これは可能です。

select * from 
(
select (A.Column + A.Column2) * 8 as Col from A 
) tmp 
where Col<1000 
+0

あなたは操作の順序を持​​っているとして、あなたがクエリを概念場合、私は、(IIRC DBクラスから)以来、それはおそらくことはできません推測している間違っていないですが、EWW ... :) 選択/投影段階が最後です。 – Tyler

関連する問題