| 
    
     |  | こんばんは。 
 亀レスですけど
 SQLで総計計算をおこなう方法をご紹介しますね。
 
 ただ、データが10万件ということなので
 複雑なクエリになると遅くて実用に耐えない可能性が高いため、
 簡単なUPDATE文の発行で済むように 設計で工夫します。
 
 まずは更新対象のテーブルを
 
 CREATE TABLE tbl (
 grp_num INT
 , sub_num INT
 , 品番  VARCHAR( 10 )
 , 数   INT
 , concat VARCHAR( 255 )
 , total  INT
 , CONSTRAINT pk_tbl PRIMARY KEY ( grp_num, sub_num )
 ) ;
 
 ↑のようなフィールド構成にします。
 
 
 ■データ例
 
 grp_num sub_num 品番 数 concat total
 -------------------------------------------
 1   1   A  2  Null  Null
 1   2   B  2  Null  Null
 1   3   C  3  Null  Null
 2   1   D  1  Null  Null
 2   2   E  2  Null  Null
 2   3   F  2  Null  Null
 3   1   A  3  Null  Null
 3   2   B  3  Null  Null
 3   3   W  3  Null  Null
 
 ポイントとしては、3つ。
 
 ★1つ目
 同じ品番が繰り返し出てくるようなので
 グループキーを作ること。
 ( 上記例では grp_num が該当 )
 
 ★2つ目
 同グループの中で抜けの無い連番を振ること。
 いわゆる枝番ですね。
 ( 上記例では sub_num が該当 )
 
 ★3つ目
 品番を | で結合した キー項目
 及び
 数を掛け合わせる 総計
 のフィールドは初期値を Null にしておきます。
 ( 上記例では concat と total が該当 )
 
 # YU-TANGさん、雅さん、247bさんと
 # 発言がカブッてる点はご容赦下さいね。(^_^A;;
 
 
 ■SQL
 -------------------------------------------------------------------------------
 
 UPDATE tbl T1
 LEFT JOIN tbl T2
 ON T1.grp_num = T2.grp_num And
 T1.sub_num = T2.sub_num + 1
 SET T1.total = IIf( T2.grp_num Is Null, T1.数, T2.total * T1.数 )
 , T1.concat = IIf( T2.grp_num Is Null, T1.品番, T2.concat & '|' & T1.品番 ) ;
 
 -------------------------------------------------------------------------------
 
 
 ■結果
 
 grp_num sub_num 品番 数 concat total
 -------------------------------------------
 1   1   A  2  A    2
 1   2   B  2  A|B   4
 1   3   C  3  A|B|C  12
 2   1   D  1  D    1
 2   2   E  2  D|E   2
 2   3   F  2  D|E|F  4
 3   1   A  3  A    3
 3   2   B  3  A|B   9
 3   3   W  3  A|B|W  27
 
 以下、おまけ。
 
 外部結合 は 内部結合 に比べて
 パフォーマンスがめちゃんこ悪いので
 先のSQLで 更新速度 が遅すぎる場合は
 UPDATE文を2回に分けて発行します。
 
 ▼1回目
 ------------------------------
 
 UPDATE tbl
 SET concat = 品番, total = 数
 WHERE sub_num = 1 ;
 
 ------------------------------
 ▼2回目
 --------------------------------------------
 
 UPDATE tbl T1
 INNER JOIN tbl T2
 ON T1.grp_num = T2.grp_num And
 T1.sub_num = T2.sub_num + 1
 SET T1.total = T2.total * T1.数
 , T1.concat = T2.concat & '|' & T1.品番 ;
 
 --------------------------------------------
 
 では ☆
 
 |  |