我有一个产品清单和与单个表中销售数量相对应的计数。数据布局为这样:TERADATA从滚动SUM限制创建组标识
Product Name QTY_SOLD
Mouse 23
Keyboard 25
Monitor 56
TV 10
Laptop 45
...
我想创造一个组被创建一个组ID,如果销售数量的滚动总和大于50.我们可以通过产品名称订购更大,以得到一个类似的输出以下。
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,如果我得到更多的产品和数量我必须不断变化的情况说明。有没有简单的方法来使用递归或其他方法来适应此? 这部作品的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 ;
我从来没有见过这个功能,但它完美的工作。谢谢。 –