現在の合計が表示されます (この機能は、バージョン 2012 まで SQL Server に実装されていませんでした)。 .)
ORDER BY
UNBOUNDED PRECEDING
で集約されるウィンドウを定義します および CURRENT ROW
指定しない場合のデフォルトです。 SQL Server のデフォルトは パフォーマンスが低い
RANGE
ROWS
ではなくオプション .
RANGE
のウィンドウが同点の場合、それらは異なるセマンティクスを持ちます。 version には、現在の行 (および前の行) だけでなく、同じ a
の値を持つ追加の関連付けられた行も含まれます 現在の行として。これは、以下の結果でそれぞれがカウントした行数で確認できます。
SELECT a,
b,
COUNT(*) OVER (ORDER BY a
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS [Rows],
COUNT(*) OVER (ORDER BY a
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS [Range],
COUNT(*) OVER() AS [Over()]
FROM t;
返品
a b Rows Range Over()
-------- -------- ----------- ----------- -----------
NULL NULL 1 4 12
NULL NULL 2 4 12
NULL NULL 3 4 12
NULL NULL 4 4 12
a b 5 7 12
a b 6 7 12
a b 7 7 12
c d 8 11 12
c d 9 11 12
c d 10 11 12
c d 11 11 12
e NULL 12 12 12
期待どおりの結果を得るには、両方を省略してください PARTITION BY
および ORDER BY
空の OVER()
を使用します 節 (上にも示されています)。