Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1469 / 9994 ←次へ | 前へ→

【11818】Re:VBAをクエリで使う方法
お礼  かな  - 10/10/19(火) 14:07 -

引用なし
パスワード
   ▼mayu さん:

解答ありがとうございました
まだまだアクセスが勉強不足の為、
解読中です

また、どうしてもわからないところがあったら質問してもいいでしょうか?

これを参考に、勉強してみます
ありがとうございました


>こんばんは。
>
>亀レスですけど
>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.品番 ;
>
>--------------------------------------------
>
>  では ☆

332 hits

【11779】VBAをクエリで使う方法 かな 10/9/24(金) 13:30 質問[未読]
【11780】Re:VBAをクエリで使う方法 かな 10/9/24(金) 15:53 発言[未読]
【11781】Re:VBAをクエリで使う方法 かな 10/9/24(金) 15:55 発言[未読]
【11783】Re:VBAをクエリで使う方法 YU-TANG 10/9/24(金) 17:31 質問[未読]
【11784】Re:VBAをクエリで使う方法 かな 10/9/27(月) 10:15 発言[未読]
【11787】Re:VBAをクエリで使う方法 10/9/27(月) 13:10 発言[未読]
【11789】Re:VBAをクエリで使う方法 かな 10/9/27(月) 16:04 質問[未読]
【11791】Re:VBAをクエリで使う方法 10/9/27(月) 17:16 回答[未読]
【11800】Re:VBAをクエリで使う方法 かな 10/9/30(木) 12:39 お礼[未読]
【11792】Re:VBAをクエリで使う方法 YU-TANG 10/9/27(月) 20:07 発言[未読]
【11801】Re:VBAをクエリで使う方法 かな 10/9/30(木) 12:41 お礼[未読]
【11793】Re:VBAをクエリで使う方法 247b 10/9/27(月) 21:16 発言[未読]
【11794】Re:VBAをクエリで使う方法 247b 10/9/28(火) 14:09 発言[未読]
【11802】Re:VBAをクエリで使う方法 かな 10/9/30(木) 12:48 お礼[未読]
【11805】Re:VBAをクエリで使う方法 mayu 10/10/3(日) 1:26 回答[未読]
【11818】Re:VBAをクエリで使う方法 かな 10/10/19(火) 14:07 お礼[未読]

1469 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078193
(SS)C-BOARD v3.8 is Free