|
▼新米 さん:
こんにちは。
まず…投稿される前にもう一度見直して見ましょう。
>その際にある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 が変更になってしまいます。
もしそうなのであればテーブルを増減させるのではなく、
レコードを増減させるようなテーブル構造への変更をお勧めします。
また結果に関してもわざわざテーブルを作成するのではなく、
クエリで処理するのが一般的ですね。
|
|