• 締切済み

5テーブルを1クエリで抽出&集計

A_TBL:オーダー(親)情報⇒受注先 B_TBL:オーダー(子)情報⇒受注品 C_TBL:出荷情報 D_TBL:受注先情報 E_TBL:〆日情報 <<A_TBL>>   <<B_TBL>>     <<C_TBL>> A  CORP  B  A ITEM ORDER  C  A  B SYUKA DATE a01 AAA  b01 a01 XXX 20  c01 a01 b01 10 01/05 a02 BBB  b02 a01 YYY 20  c02 a03 b03 10 01/10 a03 AAA  b03 a03 ZZZ 10  c03 a03 b07 10 01/05         b04 a02 XXX 30  c04 a02 b02 10 02/15         b05 a01 ZZZ 30  c05 a02 b06 20 01/25         b06 a02 YYY 20  c06 a01 b01 10 01/20         b07 a03 XXX 10  c07 a01 b02 10 02/10 <<D_TBL>>    <<E_TBL>> D  CORP SHIME  E SHIME   d01 AAA  e01   e01 末日 ⇒ 01~月末 d02 BBB  e02   e02 20日 ⇒ 21~20日(1月が12/21~1/20を集計) d03 CCC  e01   e03 10日 ⇒ 11~10日 $_POST[YYYY]と$_POST[MM]で受け渡された年月で CORP毎で集計サイクル毎にSYUKAを集計したいのですが。 ネックとなっているのが、会社毎に集計サイクルが違うことです。 1クエリで可能でしょうか?不可なら件数が多いのでできるだけ短時間でするには?を教えていただきたいのですが。

  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

締め毎に集計したいなら、年月はどうするか条件が競合しませんか? たとえばCテーブルの5行目1/25の出荷分はAテーブルによるとBBB社との 取引ですのでD、Eテーブルからe02の20日締めとなりますね? (さらっとみただけだから自信ないですが) これは1月で集計したいのか2月で集計したいのかあいまいです。 そういった仕様を固めるのが先決ですね。

関連するQ&A

  • 3テーブルより抽出のSQL文

    3テーブルよりを以下の条件で1つのSELECT文で抽出したいのですが可能でしょうか?  ・C_TBLのDATEが2007のデータ〔SUBSTR(DATE,1,4)='2007'を使用?〕  ・A_TBLのCORPがcorp1のデータ(あいまい検索)  ・CORP(昇順)、DATE(降順)、ITEM(昇順)でソート ・表示カラムは、CORP・DATE・ITEM・SURYO・TANKAです <<A_TBL>>   <<B_TBL>>         <<C_TBL>> A  CORP    B  A  ITEM TANKA   C  A  B   DATE  SURYO a01 corp11   b01 a02 item03 10   c01 a03 b06 2007-11-01 100 a02 corp13   b02 a03 item01 20   c02 a01 b03 2007-12-01 200 a03 corp11   b03 a01 item03 10   c03 a05 b04 2007-11-01 100 a04 corp05   b04 a05 item02 30   c04 a01 b05 2007-11-01 300 a05 corp13   b05 a01 item02 30   c05 a03 b06 2007-12-01 200            b06 a03 item03 20   c06 a01 b05 2007-11-02 100            b07 a01 item01 10   c07 a03 b02 2007-11-01 500 また、以下の条件で集計を1つのSELECT文で行えますか? 現在は、C_TBLとB_TBLで集計抽出し、A_TBLの対象データを抽出し、2つの配列より・・・ というロジックを組んでいます。  ・C_TBLのDATEが2007のデータ〔SUBSTR(DATE,1,4)='2007'を使用?〕  ・A_TBLのCORPがcorp1のデータ(あいまい検索)  ・CORP(昇順)、DATE(降順)でソート ※DATEは年月のみです  ・CORP、DATE(年月)毎で金額を集計〔SUM(C_TBL.SURYO*B_TBL.TANKA) AS KINGAKU〕 ・表示カラムは、CORP・DATE・金額です 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • クロス集計クエリの結果をテーブルにしたい

    こんにちは。ACCESS 97、ほぼ初心者です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1445032 こちら様の質問の、便乗質問です(質問者様とは関係ありません)。 品番,倉庫,数量 4944,F,190 4960,A,25 4960,B,6 4960,C,72 4960,D,20 4960,E,50 4960,F,3 4962,C,26 4962,E,4 4963,C,5 4964,A,4 4964,C,148 4964,E,42 4965,A,2 4965,C,5 4965,E,1 4966,C,4 4966,E,1 こんなデータからテーブルを作成し、クロス集計クエリで 品番 A B C D E F 4944 190 4960 25 6 72 20 50 3 4962 26 4 4963 5 4964 4 148 42 4965 2 5 1 4966 4 1 という結果を出し、上の質問の方法でテーブル作成すると、元データと同じテーブルが作成されます。 A、B、C、D、E、Fを列見出しにしたテーブルを作成したいのですが、教えてください。

  • エクセル集計

    下記の表でfujiに関し、到着時間が2月3日分で3件あるので、処理結果表に3件というように集計したが、時間の境目のところで集計値が正しくない。式を、どう直せばよいかわからない。 OFFSET機能も不理解。適性値の考えを教えて。 データ(datremo!シート)    B列: クラス    D列:名前     G列:到着時間 Zzz: kon: 2006/2/10 14:47 Zzz: kon: 2006/2/10 14:47 Bbb: miu: 2006/2/10 14:43 Bbb: miu: 2006/2/10 14:42 Aaa: kon: 2006/2/10 14:34 Aaa: kon: 2006/2/10 13:25 Ccc:    tan: 2006/2/9 16:24 Ccc: tan: 2006/2/9 15:18 Ccc: tan: 2006/2/9 15:00 Aaa: fuji: 2006/2/3 17:45 Aaa: fuji: 2006/2/3 17:30 Aaa: fuji: 2006/2/3 16:14 ccc:     tan: 2006/2/1 13:40 処理結果::*の場所、c6の式=SUMPRODUCT((INT(OFFSET(datremo!$G$2,,,100,1))=$A6)*(OFFSET(datremo!$B$3,,,100,1)=C$3)*(OFFSET(datremo!$D$3,,,100,1)=C$4)) (datremo!$G$2:到着時間、$A6:集計表日付け 、datremo!$B$3:集計表のクラス、  datremo!$D$3:データの名前、C$4:集計表の名前) A列      C列 クラス Aaa: Bbb: ccc: 名前 fuji: miu: tan: 数 数 数 2006/2/1 水 0*: 0: 0: 2006/2/2 木 0: 0: 0: 2006/2/3 金 2: 0: 1: 2006/2/4 土 0: 0: 0: 2006/2/5 日 0: 0: 0: 2006/2/6 月 0: 0: 0: 2006/2/7 火 0: 0: 0: 2006/2/8 水 0: 0: 0: 2006/2/9 木 1: 0: 2: 2006/2/10金 0: 2: 1: 2006/2/11土 0: 0: 0: 略 2006/2/28火 0: 0: 0: トータル 3件 2件 4件

  • エクセルの表集計

    エクセル上でこのような表があり ○ A B C○   D 一 1 31 101 xxx 二 2 34 102 xxx 三 4 34 102 xxx 四 3 32 104 xxx 五 5 33 102 xxx これをこのような形で集計したいと思いますが、どのような関数を使い、どのように行えばうまくできるでしょうか ○ A B○ C○ D○ E 一 ○ ○ 1 ○ 2 ○ 3 二 31 101 xxx xxx xxx 三 31 102 xxx xxx xxx 四 31 103 xxx xxx xxx 五 31 104 xxx xxx xxx 六 32 101 xxx xxx xxx (漢数字およびアルファベットはセルを、○は空白(調整として)を表しています) よろしくお願いします。

  • 2つのテーブルからの抽出と件数取得

    詳細な手順は以下なのですが、C_TBLにはデータが万件を想定して、早く処理ができるSQLのSELECT分を教えて欲しいのですが。 ※1回のSQLでできれば件数を把握したい。 (1)C_TBLの日付=2007のデータを抽出  (2)A_TBLの会社=cp1のデータのみ抽出  (3)A_TBLの会社(b11・b12毎)に、C_TBLの日付(月毎)で件数を取得 A_TBL     B_TBL    C_TBL A  会社   B  単価   C  A  B  数量 日付 a1 cp11   b1  10    c1 a1 b1   1  2007-10-01 a2 cp21   b2  20    c2 a3 b2   2   2007-11-01 a3 cp12   b3  10    c3 a1 b1   1  2007-10-10 a4 cp11   b4  30    c4 a2 b3   3  2007-10-01 a5 cp21   b5  20    c5 a1 b1   5  2007-11-01 ※A_TBLのA、B_TBLのB、C_TBLのCはPrimary_keyです。 上記処理はページ数を書き出す為の件数を取得しているだけなのですが、次に再度、表示件数分(LIMIT)だけ以下の処理を行う  (1)上記のと同様  (2)上位と同様  (3)A_TBLの会社(b11・b12毎)に、C_TBLの日付(月毎)で表示件数分を抽出  (4)A_TBLの会社(b11・b12毎)に、C_TBLの日付(月毎)で、B_TBLの単価を参照して金額を算出し集計。 宜しくお願い致します。

  • Excel2002:複数条件のデータの個数の集計

    苦手な集計について質問させてください。 [A] [B] [1] AAA aaa [2] BBB bbb [3] AAA aaa [4] AAA bbb [5] BBB ccc 上記のようなデータで[A]と[B]のAND条件でみたときの個数を集計したいと思います。 例えば上記であれば、 [A]AAAかつ[B]aaa・・・2個 [A]BBBかつ[B]bbb・・・1個 [A]AAAかつ[B]bbb・・・1個 [A]BBBかつ[B]ccc・・・1個 になります。[B]のデータは[A]のデータに依存せず、[A]の各値にまたがっています。([B]bbbは[A]AAAと[A]BBBの場合があります) 実際のシートでは、全パターンを網羅したリストがA列とB列、集計対象がD列とE列にあります。 上記の例でいえば、以下のようになっています。 [A] [B] [C] [D] [E] [1] AAA aaa AAA aaa [2] AAA bbb BBB bbb [3] BBB bbb AAA aaa [4] BBB ccc AAA bbb [5] BBB ccc つまり[A]列と[B]列が組み合わせパターン、[D]列と[E]列が集計元データです。 ちなみにパターン数が414個、集計元データは29000個程度です。 そして最終的な各パターンの個数を[C]列に表示させたいと思います。 VLOOKUPやピボットテーブルを考えましたが、ピンと来ません。 適切なやり方を教えてください。よろしくお願いします。

  • ピボットテーブルで集計された表から集計する方法

    いつもお世話になります。 今回はピボットテーブルについて質問です。 ピボットテーブルの集計結果 【データの個数 / 学生】 【教科 】 【回答テーブル】 回答 総計 ABC 1 1 ABCD 1 1 ABCE 1 1 AC 3 3 ACD 2 2 AD 1 1 BC 3 3 C 26 26 CD 15 15 CDE 3 3 D 39 39 DE 2 2 E 3 3 総計 100 100 教科 回答 A ←ここに集計したい! B C D E 100人の学生が好きな教科(A、B、C、D、E)を答えましたが、列にはABC、ABCDと羅列で入っています。 その集計をA教科で○○個、B教科で○○個と計算したい。 ※【】はピボットテーブルの項目 またはエクセルシートにはそれぞればらばらのデータベースがありますので、そちらからの集計でもかまいません。 要は回答テーブルに含まれるAの文字がある項目の集計をしたいということです。 お手数ですが、教えて頂きたくどうぞ宜しくお願い致します。

  • 増減するデータの集計について

    Excel2013使用です。 「受注書」というシートのデータを集計し、「集計表」というシートに 書き出したいです。 【シート「受注書」】    C      D      E       F     G   1 商品名   色     数量    単価   備考 2 データ・・・・・・・・・・・・・・・ 【シート「集計表」】    A      B      C      D     E 6 商品名   色     数量    単価   備考 7 シート「受注書」のC~Fのデータをコピーし、 シート「集計表」のA~Dに貼り付け後、商品名を基準に重複を削除し、 各商品の合計数量をSUMIF関数で集計するようにしました。 テストデータでは上手く行ったのですが、「受注書」のデータは都度 増減があるため、データを増やして再度テストしたところ、増やした分の データが「集計表」の下部に残ってしまいます。 こんな感じ↓ 【シート「集計表」】    A      B      C      D     E 6 商品名   色     数量    単価   備考 7 *****    **     ***     ***    ** 8 ****     **     ***  ***    ** 12****     **     ***     ***    ** ←増やしたデータ コードは以下の通りです Sheets("受注書").Select Range("C2:G2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("集計表").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Range("$A$6:$E$25").RemoveDuplicates Columns:=1, Header:=xlYes Range("C7").Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("C7").Select ActiveCell.FormulaR1C1 = "=SUMIF(受注書!C3:C5,集計表!RC1,受注書!C5)" Range("C7").Select Selection.AutoFill Destination:=Range("C7:C9"), Type:=xlFillValues Range("C7:C9").Select Range("A2").Select End Sub 試しに ActiveSheet.Range("$A$6:$E$25").RemoveDuplicates Columns:=1, Header:=xlYes の部分を ActiveSheet.Range("$A:$E").RemoveDuplicates Columns:=1, Header:=xlYes に変えてみたところ、下部の重複データは消えたのですが、集計結果が何故か A7以降にではなくA4以降に表示されてしまい、罫線も消えてしまいました。 更に、C列の数量に不要な0が表示されてしまいます。 こんな感じ↓   A      B      C      D     E 4 商品名   色     数量    単価   備考 5 *****    **     ***     ***    ** 6 ****     **     ***  ***    ** 7                0 8                 0 どこを直したら良いでしょうか?

  • Accessクロス集計クエリで

    Accessのクロス集計クエリで下記のような商品名・納品週を行見出し、受注状況を列見出しにして集計クエリを作ったのですが、受注状況1 受注状況2の合計を列に増やしたいのですがどうすればよろしいでしょうか。 商品名 納品週  受注状況1 受注状況2 受注状況3 合計 ------------------------------ A   2007/03/25   10      15       0     25 A   2007/04/02   15      12       15     42 A   2007/04/09    0      10       7     17 B   2007/03/25   11       0       11     22 B   2007/04/02   10      15       0     25

  • 分ごとの集計で

     初めまして、よろしくお願いします。  A列に 2007/9/6 15:09:46      2007/9/6 15:09:50      2007/9/6 15:10:06 " " と表示されているデータで、分ごとの集計を出したいと思います。  ここで B列には集計されるデーター数が、 C列に =IF(A1<>"",FLOOR(A1,"0:01"),"")  と言う関数を使い、秒数を切り捨て、 D列に  2007/9/6 15:09:00 すぐ下に関数=D1+"0:01:00" E列に集計させる関数=SUMIF(c:c,d1,b:b)  という風に作ったのですが、部分的に集計がでるのですが、集計0とでてしまう部分が多くありました。これはなぜでしょうか。また、何か別の方法でいいものがあれば教えて頂きたく、よろしくお願いします。