2017-12-18 3 views
0

データ、ルート番号、シーケンスでソートされたデータテーブルがあります。私がやろうとしています何すべての残りの行(現在の行を含む)のローリングMIN番号を取得する方法

Delivery Date Order_ID Route_Number Stop # Sequence Min Stop# Formula 
12/11/2017   Z11   100201   2  1   1 MIN(D2:$D$6) 
12/11/2017   Z12   100201   1  2   1 MIN(D3:$D$6) 
12/11/2017   Z13   100201   3  3   3 MIN(D4:$D$6) 
12/11/2017   Z14   100201   5  4   4 MIN(D5:$D$6) 
12/11/2017   Z15   100201   4  5   4 MIN(D6:$D$6) 

は、Excelの私ができるように私は、列分停止#を得ることができますどのように、私のSQLクエリです。

ロジックは次のとおりです。現在の行から同じroute_numberにあるすべての残りの行に最小停止数を指定し、配信日、delivery_date、route_numberによるパーティションのようなものを考えています。

誰かに考えがありますか?

おかげ

答えて

0
min(stop) over (partition by route_number, delivery_date 
order by sequence rows between current row and unbounded following) 

または

min(stop) over (partition by route_number, delivery_date 
order by sequence desc rows between unbounded preceding and current row) 

あなたが句上での注文時に使用rows between unbounded preceding and current rowがデフォルトのウィンドウなので

min(stop) over (partition by route_number, delivery_date 
order by sequence desc) m2 

に簡素化することができます。

1

minウィンドウ関数を使用します。

select t.*,min(stop) over(partition by route_number,delivery_date 
          order by sequence rows between current row 
          and unbounded following) as min_stop 
from tbl t 
関連する問題