none
複数テーブルを外部結合した場合の集計について RRS feed

  • 質問

  • 初めて投稿いたします、初老のSQL初心者です

    cobolの開発は長かったのですが、あるテーマでSQLを多用するシステム構築を行うことになり

    下記のような集計を行う場合、どのようにコーディングすれば簡単にできるでしょうか

    有識者のかた、ご教授いただければ助かります。

    3本のテーブルを使用し、2本を外部結合した際、2本ともにデータが存在しないときに

    プライマリ(主)のテーブルある項目を集計したい

    以下、誤りがあると思いますがイメージです

    select

    sum(a.出荷指示数) 

    from 出荷指示テーブル as a

    left outer join 出荷テーブル as b

    on a.出荷№ = b.出荷№

    left outer join 得意先マスタ as c

    on a.得意先コード = c,得意先コード

    where a.出荷指示日 >= 20190410

    order by a.出荷指示№

    のようなSQLで、a.出荷指示テーブルにのみ存在するときに

    sumを行いたいです。

    よろしくお願いいたします

    2019年4月10日 11:40

回答

  • 初老の初心者様

    以下のクエリで実現できるかと思いますが、いかがでしょうか?

    select
    	sum(a.出荷指示数)
    from
    	出荷指示テーブル as a
    where
    	a.出荷№ not in (select b.出荷№ from 出荷テーブル as b)
    and a.得意先コード not in (select c.得意先コード from 得意先マスタ as c)
    and a.出荷指示日 >= 20190410

    ※参考になった場合は、「回答としてマーク」をお願いいたします!

    2019年4月10日 12:22

すべての返信

  • 初老の初心者様

    以下のクエリで実現できるかと思いますが、いかがでしょうか?

    select
    	sum(a.出荷指示数)
    from
    	出荷指示テーブル as a
    where
    	a.出荷№ not in (select b.出荷№ from 出荷テーブル as b)
    and a.得意先コード not in (select c.得意先コード from 得意先マスタ as c)
    and a.出荷指示日 >= 20190410

    ※参考になった場合は、「回答としてマーク」をお願いいたします!

    2019年4月10日 12:22
  • 初老の初心者様

    以下のクエリで実現できるかと思いますが、いかがでしょうか?

    select
    	sum(a.出荷指示数)
    from
    	出荷指示テーブル as a
    where
    	a.出荷№ not in (select b.出荷№ from 出荷テーブル as b)
    and a.得意先コード not in (select c.得意先コード from 得意先マスタ as c)
    and a.出荷指示日 >= 20190410

    実現できました ありがとうございました

    2019年4月14日 1:12