qohという列があるはずのSSMSでテーブルまたはビューを作成したいと思います。その列では、列の合計値を計算する必要がありますrel_qty。つまり.
これを行う可能性はありますか?
これが私の質問です。しかし、このクエリはそれ以上ではなく、最初と2番目の行のみを満たしました。
SELECT a.id, a.tot_qty, a.rel_qty,
(a.tot_qty -
COALESCE (a.rel_qty +
(SELECT b.rel_qty
FROM dbo.foo AS b
WHERE (b.id = a.id - 1)),
a.rel_qty)
) AS qoh
FROM dbo.foo AS a
ORDER BY a.id
そして、私のidが1つの値をスキップした場合、このクエリは計算に失敗しました。どうすれば修正できますか?
これが私の結果のスクリーンショットです
現在の合計が必要なようです。
tot_qty
がすべての行で同じ場合は、
SELECT id,
tot_qty,
rel_qty,
tot_qty - SUM(rel_qty) OVER (ORDER BY id ROWS UNBOUNDED PRECEDING) AS qoh
FROM dbo.foo
ORDER BY id;
ROWS UNBOUNDED PRECEDING
はROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
の略語です。
このウィンドウフレームオプションは、各行について、SUM
がid
で順序付けられたそれ自体とすべての先行オブジェクトを含むことを意味します。
合計を実行するための最善のアプローチ– SQL Server 2012用に更新 で説明されているように、ROWS
オプションは潜在的に効率にとって重要です。