• ベストアンサー

他テーブルの区分を使っての集計に関して

教えて下さい。 AとBというテーブルが存在し、それぞれ Aテーブル 社員番号、金額 Bテーブル 社員番号、部署コード という項目となっています。 ※ かなり簡単なテーブルに省略してありますが、、、、 上記のBテーブルの部署コード毎にAテーブルの金額を集計したいと考えていますが、 そのようなSQLはどのように書くのでしょうか。。。 単純にfrom句で2つのテーブルを指定し、where句で社員番号で結合し、group by で部署コードを指定してもできなかったものですから。。。 初歩的な質問で申し訳ありませんが、教えて頂ければ幸いです。 よろしくお願いします。

  • Oracle
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

できなかったSQLを見せてください。 SELECT B.部署コード ,SUM(A.金額) FROM A,B WHERE A.社員番号=B.社員番号 group by B.部署コード もしくは SELECT 部署コード ,SUM(金額) FROM ( SELECT B.部署コード ,A.金額 FROM A,B WHERE A.社員番号=B.社員番号 ) group by 部署コード

yurix_1
質問者

補足

早速の回答ありがとうございます! 教えて頂いたように記述したら上手く動きました!! ありがとうございました!!

関連するQ&A

  • 【初歩的な質問ですが・・・】 SQL文書き方がわかりません

    SQLの知識に乏しい者です。 よろしくお願い致します。 ●テーブルA ・会計コード ・年度 ・部署番号 ・社員番号 ・その他幾つかのデータ ※Where句で「年度>2002年」以降を抽出 のテーブルがあります。 この時、Bテーブルで ●テーブルB ・会計コード(主キー) ・年度 ・部署番号(主キー) ・社員番号(主キー) ・その他幾つかのデータ ※Aテーブルで抽出されたデータの中から絞り込む というテーブルを抽出するSQL文を組みたいのですが、効率の良いやり方がわかりません。 副問合せで  Select [B表で抽出した列名…]  From B表  Where 会計コード = (Select 会計コード               From A表               Where 年度 > '2002')  AND 部署番号 = (Select 部署番号             From A表               Where 年度 > '2002') ・・・・以下省略 の様に書くと効率が悪い気がしました。 (実際には、副問合せが6個書くことになるため) 良い書き方を知っている方がいらっしゃいましたら、よろしくお願い致します。

  • 他のDBのテーブルと内部結合が可能でしょうか

    他のDBのテーブルと内部結合が可能でしょうか sql sever 2005 を使用します。このたび、データベースAのテーブルaを定期的に検索するsqlを作成することになりました。このsql文は、ストアードプロシージャとして登録予定です。 その際、テーブルbを内部結合で参照します。例として、テーブルaは社員番号があり、テーブルbは社員番号、社員名があります。(テーブルbは社員マスター) テーブルaを参照し、その社員名を内部結合(INNER JOIN)で取り出します。 ここで、テーブルa,bが共に、同じデータベース内にある場合は、問題ないのですが、 テーブルbは、別のマシンのsql sever 上にあります。(したがって、データベース名も異なります) このような状態で、内部結合による参照は可能でしょうか? また、内部結合ができないまでも、ストアードプロシージャで、データベースAのテーブルaを参照しながら、別のマシンのデータベースBのテーブルbを参照することは、原理的に可能でしょうか。 なお、データベースは共にsql server 2005を使用します。

  • 集計をしたい

    SQLで集計をしたいです。 SQLを始めたばかりの者です。 下記、よろしくお願いします。 説明不足がありましたら、ご指摘をお願いします。 MS-SQLServer2005環境です。 下記の売上テーブルが存在します。 テーブル:UriageTBL 年月日 受注番号 商品コード 商品名 個数  単価  金額 20101001 100   300     リンゴ   1   100   100 20101001 110   400     バナナ   1   150   150 20101001 110   400     バナナ  -1   150  -150 20101001 120   500     キャベツ  1   120   120 20101002 130   500     キャベツ  1   120   120 20101002 140   600     レタス   1   110   110 20101002 140   600     レタス   1   110   110 20101002 150   400     バナナ   1   150   150 ----------------------------- 商品コードに対応する商品グループ(テーブルは存在しません) 商品コード 商品グループ 300     果物 400     果物 500     野菜 600     野菜 ---------------------------- 【結果】 年月日 商品グループ 受注件数 個数合計 金額合計 2010/10/01 果物       1     1     100 2010/01/01 野菜       1     1     100 2010/10/02 果物       1     1     150 2010/10/02 野菜       2     3     340 売上テーブル(UriageTBL)を、年月日別、商品グループ別に集計し、受注件数、個数合計、金額合計を取得したいです。 また、商品コードに商品グループテーブルが存在しない為、SQL内で設定します。 ただし、受注合計金額が0円の時は集計から外します。(受注番号110は集計から外します。) (受注件数は、受注番号の件数です。) 上記の場合、どのようなSQLの組み方をすればよいのか見当もつかず悩んでおります。 どなたかご教授頂ける方がいらっしゃいましたら、よろしくお願い致します。

  • 3テーブル外部結合方法について

    3つのテーブルを外部結合したいのですが・・・、 こんがらがってしまいました。 A,B,Cの3テーブルがあり、A,B,Cの順に外部結合 (LEFT OUTER JOIN)したいのですが、 A,BのテーブルについてはWhere句の条件指定が 必要です。 Select From (Select AA.a From A AA Where b = xxxx) BB Left Outer Join (Select CC.b From B CC Where c = eeee and BB.a = CC.b) On ???? こんな感じでつまづいてしまいました・・・

  • SQLで集計について分からないことがあります。

    SQLで集計について分からないことがあります。 まず、次のようなテーブルがあったとして 日付  店舗コード ブランドコード 金額 ---------------------------------------- 09-01 | 401101 | 01 | 10000 09-02 | 401101 | 01 | 20000 09-03 | 401101 | 01 | 30000 09-04 | 401101 | 01 | 40000 09-01 | 401101 | 02 | 10000 09-02 | 401101 | 02 | 20000 09-03 | 401101 | 02 | 30000 09-04 | 401101 | 02 | 40000 09-01 | 401101 | | 11111 09-02 | 401101 | | 22222 09-03 | 401101 | | 33333 09-04 | 401101 | | 44444 ブランドコードが'Null'の金額をブランドコードが'01'の金額に 日付をキーにして集計したいんですが、 可能でしょうか? なにか、良い方法があればお願いします。

  • SQLで違うテーブルの集計結果を比較することは可能でしょうか?

    SQLで違うテーブルの集計結果を比較することは可能でしょうか? 例えばAテーブルがこんな感じです A1_ A2_ A3___ A4 ____A5 XX_ YY _5 __2010/8/13 _10:00:59 Bテーブルはこんな感じです。 B1_ B2_ B3___ B4 ____B5 XX_ YY_ 米 __2008/5/20_ 00:00:00 XX_ YY_ 味噌 _2009/8/22_ 01:02:33 XX_ YY_ 卵__ 2007/8/21_ 23:35:55 XX_ YY_ 醤油 _2010/7/16_ 15:30:35 XX_ YY_ 胡麻_ 2010/8/13_ 02:02:02 です。 見つけたい条件はBテーブルに指定した日付が含まれてる(例えば今日8/13だとか)レコードがあればそのXXとYYが何件あるかカウントをしてその値がAテーブルのA3の値と同一か調べたいのですがこういうことは出来ますでしょうか? SQL Server2005です

  • 集計のSQLについて

    皆さんの知恵をお借りしたいと思っています。 どなたか、良い案がある方お願いいたします。 以下のテーブルがあります。 (売上テーブル) 品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   40    Bさん 鉛筆   30    Bさん 鉛筆   30        鉛筆   10        上のテーブルで、品名・購入者を集計キーとして、 金額を集計したい場合、 SELECT 品名,購入者,SUM(金額) FROM 売上テーブル GROUP BY 品名,購入者  というSQL文で,   品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   70    Bさん 鉛筆   40        という結果が得られると思いますが・・・、 これを、 品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   70    Bさん 鉛筆   30        鉛筆   10        という結果になるようなSQL文を作りたいのです。 購入者が入っているものについては、品名・購入者で集計して、 購入者が空欄のものは集計しないようにしたいと思っています。 UNIONを使えばできるとは思うのですが、 それ以外の方法で、1回のSQL文でできる方法があれば知りたいと思っています。 よろしくお願いします。

  • 2つのテーブルでの集計

    こんにちは。 1日悩んでまだ解決出来ないのでちょっと質問に参りました。 以下のような感じのテーブルがあるとして ● T1 名前|A_id|B_id| AAAA|1111|----| BBBB|----|2222| CCCC|3333|4444| ● T2 A_id|金額 1111|2000 3333|1000 1111|4000 ● T3 B_id|金額 2222|2000 4444|4000 ● 抽出結果でやりたいこと →SUM(A_idの金額)とSUM(B_idの金額)を足した金額が5000以上のみ抽出 名前|A_id|B_id|A金額|B金額|横の合計| AAAA|1111|----|6000 |-----|6000 CCCC|3333|4444|1000 |4000 |5000 テーブル同士はLEFT JOINで繋がっており A_id B_idの合計はそれぞれ SUM()を使って、とりあえず出ている状態です あとはA_id と B_idの合計を出して、5000以上のみ抽出で終わりですが 1.SUM(A_id) とSUM(B_id)の合計方法 2.5000以上の判別方法 をどうするか で試行錯誤しているところです。 PHPで無理矢理 判別させれば表は出せると思うのですが、SQL文(というのでしょうか)の中でどうにかしたいと思っています。 SUMの使い方やHAVING WHERE の使い方・使いどころなどが微妙にわからず うまく応用出来ないので、こういう使い方があるよ・出来るよ といった 参考例があれば教えて頂けますでしょうか。ヨロシクお願いします。 MySQL クライアントのバージョン: 5.0.45

    • ベストアンサー
    • MySQL
  • ACCESSのテーブル結合に関して

    初歩的な事で申し訳ありませんが、教えて下さい。 以下のように3つのテーブルが存在し、検索条件をBテーブルの仕入先コードが"AAA"と 指定した際に、 発注番号、発注日付、仕入先コード、仕入先名 という形でOUTPUTしようと考えています。 その場合、クエリではどのように結合すれば良いでしょうか。。。 Aテーブルの発注番号とBテーブルの発注番号、Bテーブルの仕入先コードとCテーブルの 仕入先名という結合の形では、条件の"AAA"が1件しかないにもかかわらず、複数件出力されて しまうかと思われます。 《テーブル内容》 Aテーブル 発注番号 発注日付 Bテーブル 発注番号 仕入先コード Cテーブル 仕入先コード 仕入先名 ※ Bテーブル、Cテーブルの仕入先コード"AAA"は、それぞれ1件ずつしかない。 教えて頂きたいと思います。

  • Accessユニオンクエリーで2つのテーブルを集計

    Accessのユニオンクエリーで2つのテーブルを集計したいのですが Aテーブル コード1 値 1    5 1    2 Bテーブル コード2 値 1    1 2    3 結果 コード 値 1    8 2    3 このような結果を得ることは出来ますでしょうか? SELECT Aテーブル.コード1 AS コード,Aテーブル.値 UNION SELECT Bテーブル.コード2 AS コード,Bテーブル.値 このように記述すると コード 値 1    5 1    2 1    1 2    3 このような結果になってしまうのですが・・