Access VBA質問箱 IV

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

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


6170 / 9994 ←次へ | 前へ→

【7032】Re:テーブルの合算
回答  小僧  - 06/1/5(木) 13:28 -

引用なし
パスワード
   ▼新米 さん:
こんにちは。

まず…投稿される前にもう一度見直して見ましょう。

>その際にある1フィールドの値(Bフィールド)は…
>以下参照

以下に Bフィールド がありません。

><結果>
> ID | 氏名  | 仕事  | 作業時間
>-------------------------------------------
> 140  | Aさん |庶務  |  3.0
> 140  | Aさん |会議  |  3.0
> 150  | Aさん |勉強会 |  3.0
> 160  | Aさん |外出  |  1.0
> 170  | Aさん |庶務  |  1.0

作業時間の計算が間違っていませんでしょうか?


さて、本題ですが、Unionクエリを使うと実現が可能ですね。

SELECT * FROM A1
UNION ALL SELECT * FROM A2;

上記SQL をクエリの SQL ビューに記述して保存。(仮にQ_Union)

 ID | 氏名  | 仕事  | 作業時間
-------------------------------------------
 140  | Aさん |庶務  |  0.5
 140  | Aさん |会議  |  1.5
 150  | Aさん |勉強会 |  1.0
 160  | Aさん |外出  |  1.0
 140  | Aさん |庶務  |  1.5
 140  | Aさん |会議  |  0.5
 150  | Aさん |勉強会 |  2.0
 170  | Aさん |庶務  |  1.0

この Q_Union を使って

SELECT ID, 氏名, 仕事, Sum(Q_Union.作業時間) AS 作業時間の合計
FROM Q_Union
GROUP BY ID, 氏名, 仕事;

という SQL で結果が出ると思われます。


一気にやるのであればサブクエリを使う方法があります。

SELECT P.ID, P.氏名, P.仕事, Sum(P.作業時間) AS 作業時間の合計
FROM [
SELECT * FROM A1
UNION ALL
SELECT * FROM A2
]. AS P
GROUP BY P.ID, P.氏名, P.仕事;

上記 SQL をクエリの SQL ビューに貼り付け結果を確認されてみて下さい。


※ 今後テーブルが増える可能性(A3,A4…)はありませんか?
  テーブルが増えるようですと、その度に SQL が変更になってしまいます。
  もしそうなのであればテーブルを増減させるのではなく、
  レコードを増減させるようなテーブル構造への変更をお勧めします。

  また結果に関してもわざわざテーブルを作成するのではなく、
  クエリで処理するのが一般的ですね。 

260 hits

【7031】テーブルの合算 新米 06/1/5(木) 12:53 質問
【7032】Re:テーブルの合算 小僧 06/1/5(木) 13:28 回答
【7033】Re:テーブルの合算 新米 06/1/5(木) 16:54 お礼

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