前回の記事では、over句での前後の行の使用法について説明しました。 この例では、前の例で作成したのと同じデータベースとテーブルを使用して、前と後の両方の行を無制限に表示します。,
SQL Server2012のTSQLで使用できる新機能の一つは、ROWS UNBOUNDED PRECEDINGとROWS UNBOUNDED FOLLOWINGオプションです。 の限りオプションを使用した場合に使用可能であり前の選択肢があります。 これがどのように機能するかです…
ROWS UNBOUNDED PRECEDING
-- ROWS UNBOUNDED PRECEDINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS UNBOUNDED PRECEDING) as MinRevenueToDatefrom REVENUEorder by departmentID, year;
この例では、MinRevenueToDateは、この行の最も低い収益と、現在の部門idの日付順の以前のすべての行
行1がMinRevenueToDateを10030に設定し、収益年が低い行7まで変更されないことがわかります。,
その後、16行目は、これまでの収益が最も低い新しい部門のためにやり直します。 その後、行21はより低い収益番号にリセットされます。
ROWS UNBOUNDED FOLLOWING
UNBOUNDED FOLLOWINGの例では、
-- ROWS UNBOUNDED FOLLOWINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as MinRevenueBeyondfrom REVENUEorder by departmentID, year;
min(Revenue)がdepartmentIDによってパーティション化されたセットの最後までのすべての行に対して計算されることがわかります。,
UNBOUNDEDオプションは、セットの先頭から現在の行、または現在の行からセットまたはグループの最後までの計算を決定するのに非常に便利です。
この機能はSQL Server2012で導入されたもので、以前のエディションでは使用できないことに注意してください。
関連リンク
- SQLクエリトレーニング
- CTEデータページング
- 行と範囲を持つOVER句
コメントを残す