dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。
以前、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つのテーブルを合わせることはできるのは分かったのですが、単純に増やしただけではどうにもうまくいきませんでした。
何卒、ご教示のほどよろしくお願い申し上げます。

質問者からの補足コメント

  • うーん・・・

    「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.部品№;

    これを実行したところ、「発注数のパラメータ入力」を求められます。
    何を入力したら良いでしょうか。

      補足日時:2018/12/05 18:03
  • HAPPY

    T発注を確認したところ、フィールド名が発注数ではありませんでした。
    修正したところ、目的のものができました。
    Ogre7077さん、ありがとうございました。

      補足日時:2018/12/05 18:09

A 回答 (2件)

No.1 です


すみません。Microsoft Access は、標準 SQL の case 関数が使えないようですね。
代わりに IIf 関数や Switch 関数で置き換えてください
    • good
    • 0
この回答へのお礼

Ogre7077さん、再びありがとうございます。
申し訳ありません。IIFやSwithの使い方を調べて置き換えてみたのですが、どうにもうまくいきません。はじめて使う関数なので、私の使い方が違っている可能性大ですが…。
何度も申し訳ありませんが、置き換え方を教えていただけないでしょうか。
よろしくお願い申し上げます。

お礼日時:2018/12/05 14:20

テーブルを今後も追加することを考慮し、少しばかり汎用的に



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.部品
    • good
    • 0
この回答へのお礼

Ogre7077さん、ありがとうございます。
試してみましたが、

クエリ式 ‘sum(case Q.種別 when 1 then Q.数 end)’の構文エラー:演算子がありません。

と出てしまいます。
なぜだかわかるでしょうか。
ご教示いただけますと幸いです。

お礼日時:2018/12/04 16:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!