![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になっております。
以前、2つのテーブルを1つにする方法について教えていただきましたが、それにもう1つのテーブルを追加したいと考えています。私なりにいろいろ調べて四苦八苦しましたが、思うような結果にならず再度質問させていただきました。
具体的には下記の通りです。
テーブル名:T入庫
フィールド:ID(主キー)、日付、部品№、入庫数
テーブル名:T出庫
フィールド:ID(主キー)、日付、部品№、出庫数
上記、2つのテーブルを下記のように1つにする方法を教えてもらいました。
SELECT Q.日付, Q.部品№, SUM(Q.入庫数) AS 入庫数, SUM(Q.出庫数) AS 出庫数
FROM(SELECT T入庫.日付, T入庫.部品№, T入庫.入庫数, Null AS 出庫数 FROM T入庫
UNION ALL
SELECT T出庫.日付, T出庫.部品№, NULL AS 入庫数, T出庫.出庫数 FROM T出庫) AS Q
GROUP BY Q.日付, Q.部品№;
これに次のテーブルを追加したいと考えています。
テーブル名:T発注
フィールド:ID(主キー)、日付、部品№、発注数
UNIONで3つのテーブルを合わせることはできるのは分かったのですが、単純に増やしただけではどうにもうまくいきませんでした。
何卒、ご教示のほどよろしくお願い申し上げます。
No.2ベストアンサー
- 回答日時:
No.1 です
すみません。Microsoft Access は、標準 SQL の case 関数が使えないようですね。
代わりに IIf 関数や Switch 関数で置き換えてください
Ogre7077さん、再びありがとうございます。
申し訳ありません。IIFやSwithの使い方を調べて置き換えてみたのですが、どうにもうまくいきません。はじめて使う関数なので、私の使い方が違っている可能性大ですが…。
何度も申し訳ありませんが、置き換え方を教えていただけないでしょうか。
よろしくお願い申し上げます。
No.1
- 回答日時:
テーブルを今後も追加することを考慮し、少しばかり汎用的に
select Q.日付, Q.部品
, sum(case Q.種別 when 1 then Q.数 end) as 入庫
, sum(case Q.種別 when 2 then Q.数 end) as 出庫
, sum(case Q.種別 when 3 then Q.数 end) as 発注
from (
_ select 日付, 部品, 1 as 種別, 入庫数 as 数 from T入庫
_ union all
_ select 日付, 部品, 2 as 種別, 出庫数 as 数 from T出庫
_ union all
_ select 日付, 部品, 3 as 種別, 発注数 as 数 from T発注
) as Q
group by Q.日付, Q.部品
Ogre7077さん、ありがとうございます。
試してみましたが、
クエリ式 ‘sum(case Q.種別 when 1 then Q.数 end)’の構文エラー:演算子がありません。
と出てしまいます。
なぜだかわかるでしょうか。
ご教示いただけますと幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
在庫管理と賞味期限管理
-
Accessで“0”ゼロ表示をする
-
ダイソー×ガールズトレンド研究...
-
Accessで在庫管理する時の在庫...
-
エクセルで在庫管理表の作り方...
-
レコード数のカウント
-
差込印刷での全角表示について...
-
SQL文で パラメータが少なすぎ...
-
Access テーブルを分割してエク...
-
日付型のフィールドに空白を入...
-
アクセスのエラー「クエリには...
-
アクセスで追加した項目に全て...
-
EXCELの外部データ取得ができない
-
Accessで、1つの項目に複数の...
-
ACCESSの時間帯の抽出について
-
ACCESS 「パラメータの入力」...
-
ACCESS クエリの抽出条件に他の...
-
2つのテーブルに共通するレコ...
-
ACCESSで行数指定(5万行目~8...
-
Acsess アクセス のクエリで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessで“0”ゼロ表示をする
-
アクセスのクエリで引き算をし...
-
Access エラー 指定されたフィ...
-
Accessで在庫管理する時の在庫...
-
在庫管理と賞味期限管理
-
ACCESSで在庫管理 備考欄の組...
-
ACCESSで困っています。
-
楽天証券→SBI証券へ投資信託は...
-
Access:テーブルの情報を参照...
-
アクセスが・・・
-
Accessのレポートで日々の在庫...
-
ACCESSで在庫の入出庫履歴を作...
-
エクセルで在庫管理表の作り方...
-
Accessで在庫管理をしたいです。
-
Accessで、在庫表を作りたいの...
-
アクセス・入出庫管理
-
Accessで、在庫管理システムを...
-
フォーム上でデータをあるテー...
-
ACCESSで在庫管理を作成するよ...
-
エクセルでの在庫管理表について。
おすすめ情報
「switch」へ置き換えました。
SELECT Q.日付, Q.部品№
, Sum(Switch(Q.種別=1,Q.数,True,0)) AS 入庫
, Sum(Switch(Q.種別=2,Q.数,True,0)) AS 出庫
, Sum(Switch(Q.種別=3,Q.数,True,0)) AS 発注
FROM (
select 日付, 部品№, 1 as 種別, 入庫数 as 数 from T入庫
union all
select 日付, 部品№, 2 as 種別, 出庫数 as 数 from T出庫
union all
select 日付, 部品№, 3 as 種別, 発注数 as 数 from T発注
) AS Q
GROUP BY Q.日付, Q.部品№;
これを実行したところ、「発注数のパラメータ入力」を求められます。
何を入力したら良いでしょうか。
T発注を確認したところ、フィールド名が発注数ではありませんでした。
修正したところ、目的のものができました。
Ogre7077さん、ありがとうございました。