私は次のことを実現したいと思います:既存の注文のあるテーブルで、どのようにOVER(ORDER BY())を使用しますか?
SELECT DISTINCT
id AS Col0,
'constant' AS Col1
IIF(z < 0, x, 0) AS Col2,
IIF(z > 0, x, 0) AS Col3,
SUM(x) OVER(ORDER BY Col2 DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS [Col4]
FROM y
ORDER BY Col2 DESC
OFFSET 0 ROWS
FETCH NEXT 500 ROWS ONLY
私は累計列を作るしようとしています。問題は、テーブルのORDERBY()
をOVER()
に動的に使用したいのですが、OVER(ORDERBY())
はインデックスベースに対応しておらず、Col1
を列として受け入れません。
どうすればいいですか?後でコードで簡単に何かできるのですが、純粋なSQLでこれを行う方法を学びたいと思っています。
を作成するために使用される式を使用して
Order By Col2
を交換しますが、サンプル入力して、必要な出力を表示することができますか? 'OVER'節に現れる' ORDER BY'は、ウィンドウ関数 'SUM()'と関係し、結果セットの順序ではないことに注意してください。 –