- ハンドル
- 会議室デビュー日: 2008/01/25
- 投稿数: 16
|
投稿日時: 2008-11-27 14:38
3っつの同じ構成のテーブルの合計値を取りたいと考えております。
テーブルが3っつ(A、B、C)存在します。
テーブルの構成は下記のような全て同じフィールド内容です。
コード: |
|
(A)
CODE | DATE | ERROR_1 | ERROR_2
------------------------------------
1 | 2008/11/20 | 5 | 0
------------------------------------
2 | 2008/11/21 | 2 | 2
------------------------------------
3 | 2008/11/21 | 10 | 3
(B)
CODE | DATE | ERROR_1 | ERROR_2
------------------------------------
1 | 2008/11/20 | 2 | 0
------------------------------------
5 | 2008/11/21 | 2 | 2
(A)
CODE | DATE | ERROR_1 | ERROR_2
------------------------------------
3 | 2008/11/21 | 4 | 1
|
上記のレコードをID、DATEでGroup Byした結果が下記のようになるにはどのようなSQLを組めばよいのでしょうか?
コード: |
|
CODE | DATE | ERROR_1 | ERROR_2
------------------------------------
1 | 2008/11/20 | 7 | 0
------------------------------------
2 | 2008/11/21 | 2 | 2
------------------------------------
3 | 2008/11/21 | 14 | 4
------------------------------------
5 | 2008/11/21 | 2 | 2
|
|
- KOX
- 大ベテラン
- 会議室デビュー日: 2004/08/23
- 投稿数: 142
|
投稿日時: 2008-11-27 15:29
どこまで出来ていて、なにが出来ないのでしょうか?
結合が出来ないのでしょうか?
group byが出来ないのでしょうか?
合計値の取り方が分からないのでしょうか?
|
- King
- ぬし
- 会議室デビュー日: 2008/06/20
- 投稿数: 284
|
投稿日時: 2008-11-27 15:46
データベースは何ですか?
UNION ALL したらいいんじゃないですか?
[ メッセージ編集済み 編集者: King 編集日時 2008-11-27 15:56 ]
|
- ハンドル
- 会議室デビュー日: 2008/01/25
- 投稿数: 16
|
投稿日時: 2008-11-27 15:56
言葉足らずで申し訳ありません。
>どこまで出来ていて、なにが出来ないのでしょうか?
>結合が出来ないのでしょうか?
>group byが出来ないのでしょうか?
>合計値の取り方が分からないのでしょうか?
結合の書き方がわかりません。
結合はJOINを使うと考えているのですが、自信がありません。
Group ByはCODE、DATEでまとめればよいと考えています。
合計値はSUM(ERROR_1)のように記述すればよいと考えています。
3っつのテーブルを結合してCODE、DATEフィールドでGroup Byすれば結果が取れるのかなとは思うのですが・・・
Access2007でテストしております。
|
- ハンドル
- 会議室デビュー日: 2008/01/25
- 投稿数: 16
|
投稿日時: 2008-11-27 16:02
引用: |
|
Kingさんの書き込み (2008-11-27 15:46) より:
データベースは何ですか?
UNION ALL したらいいんじゃないですか?
[ メッセージ編集済み 編集者: King 編集日時 2008-11-27 15:56 ]
|
DBはAccess2007です。
UNION ALLを使った場合
コード: |
|
SELECT CODE, DATE, SUM(ERROR_1), SUM(ERROR_2) FROM A GROUP BY CODE, DATE
UNION ALL
SELECT CODE, DATE, SUM(ERROR_1), SUM(ERROR_2) FROM B GROUP BY CODE, DATE
UNION ALL
SELECT CODE, DATE, SUM(ERROR_1), SUM(ERROR_2) FROM C GROUP BY CODE, DATE
ORDER BY DATE;
|
のように記述すればよいのでしょうか?
|
- rain
- ぬし
- 会議室デビュー日: 2006/10/19
- 投稿数: 549
|
投稿日時: 2008-11-27 16:27
要するに、UNION ALL を使って
コード: |
|
CODE | DATE | ERROR_1 | ERROR_2
------------------------------------
1 | 2008/11/20 | 5 | 0
------------------------------------
2 | 2008/11/21 | 2 | 2
------------------------------------
3 | 2008/11/21 | 10 | 3
------------------------------------
1 | 2008/11/20 | 2 | 0
------------------------------------
5 | 2008/11/21 | 2 | 2
------------------------------------
3 | 2008/11/21 | 4 | 1
|
このような中間結果を作成したあと、それを集計すればよいわけです。
|
- King
- ぬし
- 会議室デビュー日: 2008/06/20
- 投稿数: 284
|
投稿日時: 2008-11-27 16:34
UNION ALL したものをサブクエリにすれば
それは1つのテーブルのように扱えるから
それを集計すれば良いのではないでしょうか。
|
- deanna
- 大ベテラン
- 会議室デビュー日: 2004/08/23
- 投稿数: 118
|
投稿日時: 2008-11-27 18:51
SELECT CODE, DATE, SUM(ERROR_1), SUM(ERROR_2) FROM
(
SELECT CODE, DATE, ERROR_1, ERROR_2 FROM A
UNION ALL
SELECT CODE, DATE, ERROR_1, ERROR_2 FROM B
UNION ALL
SELECT CODE, DATE, ERROR_1, ERROR_2 FROM C
)
GROUP BY CODE, DATE
ORDER BY DATE;
|