2011-03-16 94 views
0

我想从下面的初始表中随机地插入一个新的temp_table中的记录,将它们按新的PO编号(1234-1,1234-2等)进行分组,其中每个组的总和(TKG )是< 20和sum(TVOL)是< 0.1随机总和行

INITIAL TABLE 

lineID PO Item QTY Weight Volume T.KG T.VOL 
1 1234 ABCD 12 0.40 0.0030 4.80 0.036 
2 1234 EFGH 8 0.39 0.0050 3.12 0.040 
3 1234 IJKL 5 0.48 0.0070 2.40 0.035 
4 1234 MNOP 8 0.69 0.0040 5.53 0.032 
5 1234 QRST 9 0.58 0.0025 5.22 0.023 
6 1234 UVWX 7 0.87 0.0087 6.09 0.061 
7 1234 YZAB 10 0.71 0.0064 7.10 0.064 
8 1234 CDEF 6 0.69 0.0054 4.14 0.032 
9 1234 GHIJ 7 0.65 0.0036 4.55 0.025 
10 1234 KLMN 9 0.67 0.0040 6.03 0.036 

NEW Temp_Table should look like: 

LineID PO Item QTY Weight Volume T.KG T.VOL 
1 1234-1 ABCD 12 0.40 0.0030 4.80 0.036 
2 1234-1 EFGH 8 0.39 0.0050 3.12 0.040 
5 1234-1 QRST 9 0.58 0.0025 5.22 0.023 
3 1234-2 IJKL 5 0.48 0.0070 2.40 0.035 
4 1234-2 MNOP 8 0.69 0.0040 5.53 0.032 
8 1234-2 CDEF 6 0.69 0.0054 4.14 0.032 
6 1234-3 UVWX 7 0.87 0.0087 6.09 0.061 
10 1234-3 KLMN 9 0.67 0.0040 6.03 0.036 
9 1234-4 GHIJ 7 0.65 0.0036 4.55 0.025 
7 1234-4 YZAB 10 0.71 0.0064 7.10 0.064 

我无法弄清楚如何编写此...

+0

我不明白需要什么,新的temp_table中的三个第一行有PO 1234-1,然后是三个下一个1234-3,1234-3 ect ...... – mcha 2011-03-16 15:56:34

+0

如果是我认为他们试图让你使用笛卡儿加入.... – 2011-03-18 14:07:04

+0

如果你谷歌“斌包装sql服务器”,你应该得到一些相关的结果。 – 2011-03-18 16:41:09

回答

0

这可能对光标的工作。

该算法基本上可以是这样的:

  • 由一个从最初的表中的一个收集的行,积累sum(TKG)sum(TVOL)
    • 挑出行到临时而条件仍然遇见(忽略那些超过任何总和);
    • 使用lineID作为顺序;
    • 迭代到列表的末尾。
  • 在到达表的末尾时将其称为一个组,然后重新开始,省略已经收集到temp中的行。
  • 继续,但仍有行未收集。

但是我现在懒得给出实际的代码,除了它是一个家庭作业,并且游标无论如何都讨厌我。

0

1234-1,1234-2等的逻辑是将记录分成代表纸箱的组。如果订单有100个订单项,我可能需要n个纸箱(n个组)来打包所有商品。