2017-10-23 3 views
1

たとえば、aとbの数値を持つ表があり、aとbの合計を持つ表を出力したいが、それはそうと同じように5の上方ます:繰り返し論理なしまたはCTEを使用しないSELECT節で作成された列によるフィルタ

SELECT a + b AS c 
FROM t 
WHERE a + b > 5 

(私の場合、それは私が2つの場所でそれを微調整することなく、微調整したい非常に複雑なアルゴリズムBの+繰り返すことなくこれを行うための任意のエレガントな方法があります)、それをCTEに基づいてフィルタリングし、それに基づいてフィルタリングする必要はありませんか?理想的には、(これらは動作しないことは分かっていますが) "WHERE c> 5"または "HA> 5"のような単純なものです。

答えて

0

あなたはそれをこのように行うことができます。もちろん

select d.c from 
(
SELECT a + b AS c 
FROM t 
) as d 
WHERE d.c > 5 

(これはCTEではない、それはサブテーブルだが、それはあなたが、とにかく何を意味することも注意してください)

を他の方法がにありますビューを作成

0

使用lateral

select c 
from 
    t 
    crosstab lateral 
    (select a + b as c) ctl 
where c > 5 
関連する問題