0

私はいくつかのテーブルを持ち、存在に基づいて新しい列を生成するためのツールをユーザーに提供します。ウィンドウ関数による集計関数のSQL文の行をフィルタリングする方法は?

表:

+---+ 
| a| 
+---+ 
| 0| 
| 1| 
| 2| 
| 3| 
| 4| 
| 5| 
+---+ 

新しい列名:これを書い修正するためにどのようにmax(a) over(WHERE a < 3)

b

新しい列ルールは次のようでなければなりませんか?

結果は、SQL文のようにする必要があります。SELECT *, (SELECT max(a) FROM table WHERE a < 3) as b FROM table。返信:

+---+---+ 
| a| b| 
+---+---+ 
| 0| 2| 
| 1| 2| 
| 2| 2| 
| 3| 2| 
| 4| 2| 
| 5| 2| 
+---+---+ 

しかし、私はover()WHEREステートメントの内部には書き込めず、ユーザーがテーブルの名前を知ることができません。この問題をどうやって解決するのですか?

答えて

0

だけcaseとウィンドウ関数を使用します。

select a, max(case when a < 3 then a end) over() as b 
from t; 
関連する問題