- PR -

テーブル間の計算

投稿者投稿内容
ハンドル
会議室デビュー日: 2008/01/25
投稿数: 16
投稿日時: 2008-12-03 13:58
テーブル間での計算方法について質問です。
Access 2007で開発を行っております。

下記のようなテーブル構成の時
コード:
(A)
CODE |    DATE    | ERROR_1 | 
------------------------------------
  1  | 2008/11/20 |    5    | 
------------------------------------
  2  | 2008/11/21 |    2    | 
------------------------------------
  3  | 2008/11/21 |    10   | 

(B)
CODE |    DATE    | ERROR_1 | 
------------------------------------
  1  | 2008/11/20 |    2    | 
------------------------------------
  5  | 2008/11/21 |    2    | 

(C)
CODE |    DATE    | ERROR_1 | 
------------------------------------
  3  | 2008/11/21 |    4    | 



テーブルAから"CODE"&"DATE"が同じレコードのテーブルBの"ERROR_1"の値を引き算し、
テーブルAと"CODE"&"DATE"が同じレコードのテーブルCの"ERROR_1"の値を足し算した結果を求めるSQLはどのように記述すればよいのでしょうか?

下記のような結果が求められればと考えております。
コード:
CODE |    DATE    | ERROR_1 | 
------------------------------------
  1  | 2008/11/20 |    3    | * (A)、(B)間で同じCODE&DATE行を引き算結果
------------------------------------
  2  | 2008/11/21 |    2    | 
------------------------------------
  3  | 2008/11/21 |    14   | * (A)、(C)間で同じCODE&DATE行を足し算結果
------------------------------------
  5  | 2008/11/21 |    2    | 



nakaP
大ベテラン
会議室デビュー日: 2005/09/27
投稿数: 138
お住まい・勤務地: 高知
投稿日時: 2008-12-03 14:19
JOINで結合して各テーブルのERROR_1で数式を作る。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-03 14:21
何がわかりませんか?
テーブルを結合して足し算と引き算をすれば良いだけだと思いますが・・・。
わからない箇所を教えてください。
ハンドル
会議室デビュー日: 2008/01/25
投稿数: 16
投稿日時: 2008-12-03 14:32
>何がわかりませんか?
>テーブルを結合して足し算と引き算をすれば良いだけだと思いますが・・・。
>わからない箇所を教えてください。

@「3っつのテーブルの結合方法」
A「足し算、引き算の書き方」
がわかりません。

@はnakaPさんからJOINを使うというヒントをいただけたので考え中です。
Aは?です。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-03 14:49
「sql 足し算」
で検索するといっぱいヒットしますよ。
ハンドル
会議室デビュー日: 2008/01/25
投稿数: 16
投稿日時: 2008-12-03 14:54
>「sql 足し算」
>で検索するといっぱいヒットしますよ。

はい、一応検索して調べてみたのですが足し算、引き算には(+、-)を使うという事はわかるのですが、テーブル間同士の記述の方法等のサンプルが見つけられませんでした。

無名tiger
常連さん
会議室デビュー日: 2008/04/18
投稿数: 36
投稿日時: 2008-12-03 15:11
SELECT CODE,DATE,SUM(ERROR_1)
FROM
(
SELECT CODE,DATE,ERROR_1
FROM A
UNION ALL
SELECT CODE,DATE,-ERROR_1
FROM B
UNION ALL
SELECT CODE,DATE,ERROR_1
FROM C)
GROUP BY CODE,DATE

試してみてください。


_________________
カスタマイズ自由自在のスタートページ。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-03 18:08
コード:
SELECT
	A.CODE,
	A.DATE,
	A.ERROR_1 - ISNULL(B.ERROR_1, 0) + ISNULL(C.ERROR_1, 0)
FROM
    (A LEFT OUTER JOIN B ON A.CODE = B.CODE AND A.DATE = B.DATE)
	   LEFT OUTER JOIN C ON A.CODE = C.CODE AND A.DATE = C.DATE

とか。

自信は無いけど・・・。

スキルアップ/キャリアアップ(JOB@IT)