こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

2つのテーブルの合算値に関して

教えて下さい。

SQLに関してです。

ある2つのテーブルの集計(数量の合算)をSQLで行いたいと考えています。

そこで、UNION ALL を使い集計させる事ができましたが、その中で、1つのテーブルに
条件を加えたいと考えています。

つまり、副問い合わせのような形にできないかと考えています。

《テーブル》

 T_在庫日次
  
  品目番号
  場所コード
  数量
  処理区分

 T_在庫月次
  
  品目番号
  場所コード
  数量

《現状のSQL》

Select 場所コード,品目番号, SUM(数量) AS 数量 From ( Select 場所コード,品目番号, 数量 From T_在庫日次
UNION ALL Select 場所コード,品目番号, 数量 From T_在庫月次 ) Group By 場所コード,品目番号


上記のSQLに対し、T_在庫日次 の処理区分が ‘10’ のデータに対するT_在庫日次とT_在庫月次の数量の
合計を求めたいと考えています。

SQLの記述で計算までして取得する事はできないでしょうか???

教えて頂ければ幸いです。

よろしくお願いします。

投稿日時 - 2012-05-22 13:45:28

QNo.7489720

すぐに回答ほしいです

質問者が選んだベストアンサー

失礼しました、「T_在庫日次」のテーブル名の右です。(質問の1行目が2行で表示されていたので2行目のと書いてしまいました)

投稿日時 - 2012-05-23 11:15:50

お礼

nharasawa様、何度もご回答ありがとうございます!

教えて頂いたように記述しましたが、やはり処理区分='10'だけの合算値は取得できず、、、

何か間違っているでしょうか???


Select 場所コード,品目番号, SUM(数量) AS 数量 From ( Select 場所コード,品目番号, 数量 From T_在庫日次 WHERE 処理区分 = '10'
UNION ALL Select 場所コード,品目番号, 数量 From T_在庫月次 ) Group By 場所コード,品目番号

投稿日時 - 2012-05-23 14:23:09

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>T_在庫日次の方にしかデータがなくとも出力したい場合にはどのように変更したら
>良いでしょうか、、、
《現状のSQL》の2行目のテーブルの後に「WHERE 処理区分='10'」を追加すれば出来ます。

投稿日時 - 2012-05-22 19:16:27

お礼

nharasawa様、ご回答ありがとうございます。

以下のような形で間違っていないでしょうか???

Select 場所コード,品目番号, SUM(数量) AS 数量 From ( Select 場所コード,品目番号, 数量 From T_在庫日次
UNION ALL Select 場所コード,品目番号, 数量 From T_在庫月次 WHERE 処理区分='10') Group By 場所コード,品目番号

現状のSQLの2行目ですが、T_在庫月次の場合、"処理区分"という項目がなく、
条件を追加するとエラーとなってしまいます、、、

私の認識が誤っているのでしょうか、、、

もう少しだけ教えて頂ければ幸いです。

よろしくお願いします。

投稿日時 - 2012-05-23 09:01:38

ANo.1

SELECT 日次.場所コード,日次.品目番号,数量合計+数量 FROM
(SELECT 場所コード,品目番号,SUM(数量)AS 数量合計
FROM T_在庫日次 WHERE 処理区分=10
GROUP BY 場所コード,品目番号) 日次
INNER JOIN T_在庫月次 月次 ON
日次.場所コード=月次.場所コード
AND 日次.品目番号=月次.品目番号
ORDER BY 1,2
でどうでしょうか。

投稿日時 - 2012-05-22 17:03:05

お礼

nharasawa様、ご回答ありがとうございます。

これに関して、もう1点だけ教えて下さい。

教えて頂いたSQLでは場所コード、品目番号が等しい時に出力されるかと
思われます。

T_在庫日次の方にしかデータがなくとも出力したい場合にはどのように変更したら
良いでしょうか、、、

何度も大変申し訳ありません。

よろしくお願いします。

投稿日時 - 2012-05-22 17:31:49

あなたにオススメの質問