4

パーティションに対して row_number() を使用するクエリがあります。結果が出たらこんな感じ

Product         Row_Number         Price
A               1                  25
A               2                  20
A               3                  15
B               1                  100
B               2                  10
B               3                  2

次のような列に結果を表示したい

Product      Row1         Row2        Row3      price1       price2       price3
A            1            2           3         25           20           15
B            1            2           3         100          10           2

rank() のようなものを使用する必要がありますか???

テラデータを使用しています

4

2 に答える 2

2

さらに 2 つのウィンドウ関数を追加して、2 番目と 3 番目に高い価格を取得できます。これは、現在の ROW_NUMBER と同じ STAT ステップで実行する必要があるため、追加のオーバーヘッドはありません。

select
   product,
   price as Price1,
   min(price)
   over (partition by product
         order by price desc
         rows between 1 following and 1 following) as Price2,
   min(price)
   over (partition by product
         order by price desc
         rows between 2 following and 2 following) as Price3
from tab
qualify 
   row_number() 
   over (partition by product
         order by price desc) = 1
于 2013-09-26T17:29:38.850 に答える
0

並べ替えパラメーターごとに並べ替え方向を指定するだけで、うまく機能します。パーティションは使用されません。

SELECT TOP (5) ROW_NUMBER() OVER (ORDER BY SCHEME ASC,APPLICATION_DATE DESC,TRANSACTION_REF_NO ASC,APPLICATION_STATUS DESC)
于 2015-05-05T05:03:38.243 に答える