在SAS中使用Group by循环

时间:2015-08-05 20:54:00

标签: sas do-loops

我正在尝试在SAS中为一组具有不同SKU和DC的商店运行do to循环,以便为每个SKU / DC组合找到TSF_Qty。我试图将SKU / DC的TSF_QTY总结为SUM_TSF_QTY并更改increment_percent,直到SUM_TSF_QTY大于或等于netdcinv。

我能够弄清楚如何通过DC对SKU进行求和,但发现在运行do until循环时它以1.25的增量运行所有存储,然后只运行一个存储的do循环,导致非常高的increment_percent。任何人都可以帮我弄清楚如何让它运行整个商店集的do循环,然后通过sku_dc对其进行补偿?

data Test3;
    set TSF_Data (drop=location);
    increment_percent=1;
    do until(SUM_TSF_QTY>=netdcinv);
        increment_percent=increment_percent+.25;
        New_Max_Stock = (Increment_Percent * max_stock);
        Need1 = (New_Max_Stock-Stock_on_hand);
        need2 = round(need1,1);
        Need3 = (need2/inner_pack_size);
        Need4 = round(need3,1);
        Final_Need = (need4*inner_pack_size);
        if need1>0
            then TSF_Qty = max(inner_pack_size,Final_Need);
            else TSF_Qty=0;
        by SKU_DC;
        if first.SKU_DC then Sum_TSF_Qty=tsf_qty;
        Sum_TSF_Qty+TSF_Qty;
        if last.SKU_DC;
    end;
run;

不知道显示示例数据的更好方法。第一个图像是输入数据的样本。第二个图像是我得到的当前输出。由于do until仅运行所有商店一次然后运行最后一个商店,所以increment_percent远高于期望值。

Input and Output Sample Data Sets

由于

0 个答案:

没有答案