製品のリストと、1 つのテーブルで販売された数量に対応するカウントがあります。データは次のように配置されます。
Product Name QTY_SOLD
Mouse 23
Keyboard 25
Monitor 56
TV 10
Laptop 45
...
販売数量の ROLLING 合計が 50 を超える場合にグループが作成されるグループ ID を作成したいと考えています。製品名で注文すると、次のような出力が得られます。
Product Name QTY_SOLD GROUP_NBR
Keyboard 25 1
Laptop 45 1
Monitor 56 2
Mouse 23 3
TV 10 3
必要な出力を作成するために case ステートメントを作成しましたが、グループ ID カットオフを 50 から 100 に変更したい場合、またはより多くの製品と数量を取得する場合は、case ステートメントを変更し続ける必要があります。これに対応するために再帰または他の方法を使用する簡単な方法はありますか? これは Teradata 13.10 で動作します
UPDATE main FROM prod_list AS main,
(
SEL PROD_NAME
, QTY_SOLD
, SUM(QTY_SOLD) OVER (ORDER BY PROD_NAME ROWS UNBOUNDED PRECEDING) RUNNING FROM prod_list
) inr
SET GROUP_NBR = CASE
WHEN RUNNING < 50 THEN 1
WHEN RUNNING > 50 AND RUNNING < 100 THEN 2
WHEN RUNNING > 100 AND RUNNING < 150 THEN 3
WHEN RUNNING > 150 AND RUNNING < 200 THEN 4
WHEN RUNNING > 200 AND RUNNING < 250 THEN 5
ELSE 6
END
WHERE main.PROD_NAME = inr.PROD_NAME ;