• 締切済み

【Access初心者】最大値と次に大きい値の合計

お世話になります。 Accessで次のテーブルがあります。 テーブル1は半期ごとに更新されフィールドが追加されます。 テーブル1 年度   数  コード 97上   2    A 97下   1    A 96上   8    A 97上   5    B 97下   6    B 96上   3    B (以下500,000レコードぐらいあります) テーブル1をクロス集計します。 コード  97上  97下 96上   合計  97上+97下 A   2     1    8     11       3  B      5     6    3     14       11 (以下つづきます) テープル1は半期ごとに更新されるので【97上+97下】のところのフィールドを手で修正しています。 関数やSQLなどで出来る良い方法はないでしょうか。 サブクエリというのもあると聞いたのでが・・・ Accessは2003です。よろしくお願いします。

みんなの回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

でなければ コード  97上  97下 96上   合計 A      2    1  8    11 B      5    6  3    14 というクロス集計クエリ(Q1)を作成し SELECT Q1.*, NZ(Q1.97上)+NZ(Q1.97下) AS [97上+97下] FROM Q1

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

テーブル1 年度  数  コード 97上   2    A 97下   1    A 96上   8    A 97上   5    B 97下   6    B 96上   3    B (以下500,000レコードぐらいあります) テーブル1をクロス集計します。 コード  97上  97下 96上   合計 A      2    1  8    11 B      5    6  3    14 と SELECT コード,SUM(数) AS [97上+97下] WHERE テーブル1 WHERE 年度 IN ( '97上','97下' ) GROUP BY コード をコードでJOINする。

関連するQ&A

  • Access2003 クロス集計クエリでの合計

    ☆以下のようなテーブルで、フィールド[ID]~[C]があり、文字および数字のデータが混在しています。   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== (テーブル(1)) [ID]  [A]      [B]    [C]     1    111     英語    10    2    222     英語    20    3    333     数学    30    4    111     国語    40   5    222     数学    50    6    333     国語    60    7    222     国語    70   8    333     英語    80     9    111     数学    90     =========================================== [課題] クロス集計クエリを作成する (1) フィールド[A]を行見出しに設定、    フィールド[B]を列見出しに設定、    フィールド[C]を集計する項目に設定する。   (2) フィールド[C]の値を列ごとに平均を計算し、    行ごとに合計を計算する。   ※ 列と行で、それぞれ集計した値を表示する   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== [クロス集計結果]     合計  英語  国語  数学     111  140   10    40    90        222  140   20    70    50     333  170   80    60    30  --------------- 平均  150   36     56   56 ===========================================   ↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑    上記のようなクロス集計クエリの結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • Access初心者です

    ほぼ触ったことがない状況なのに仕事でExcelからアンケート調査結果をクロス集計で出すことになりました。 単数回答はなんとか出来るようになったのですが複数回答のクロス集計が上手くいきません。 どなたが解りやすく教えていただければ有難いです。 内容は,1つの設問に8つの選択肢があます(いくつでも選択可)。それぞれを集計の際にex.)問1_1,問1_2,・・・問1_8と設定して入力をしています。 Excelのデータは全て,入力のあったものに対し「1」を入力しており,無回答については空白で処理をしています。 その設問と,仮に「問2:男性,女性,無回答」という設問をクロスさせようとする場合,どういった処理を行えばよいのでしょうか。デザインビューでの処理,SQLでの処理という部分でも右往左往しております。 環境はXP,Access2003です。 乱筆乱文失礼いたしました。是非ご指導宜しくお願いします。

  • Access2003 クロス集計で集計値を四捨五入

    ☆以下のようなテーブルで、フィールド[ID]~[点数]があり、文字および数字のデータが混在しています。   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== (テーブル(1)) [ID]  [クラス]  [科目]  [点数]     1     A     英語    11    2     B     英語    22    3     C     数学    33    4     A     国語    44   5     B     数学    55    6     C     国語    66    7     B     国語    77   8     C     英語    88     9     A     数学    99     =========================================== ☆上記のテーブルをクロス集計クエリで集計する ・フィールド[クラス]を行見出しに設定、 ・フィールド[科目]を列見出しに設定、 ・フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 =========================================== [クロス集計結果]   合計   英語  国語  数学       A  154   11    44    99        B  154   22    88    55     C  187   99    77    33  =========================================== [課題] クロス集計クエリで、集計値を四捨五入する (1) フィールド[クラス]を行見出しに設定、    フィールド[科目]を列見出しに設定、    フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 (2) クロス集計の値を、下1桁で四捨五入した値を表示する。   (3) 「合計」の値を、下1桁で四捨五入した値を表示する。 ※ クロス集計した合計値を、四捨五入した値を表示する   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== [クロス集計結果]   合計   英語  国語  数学     A  150   10    40   100        B  150   20    80    60     C  190   90    70    30  ===========================================   ↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑    上記のように、クロス集計クエリでの集計値を四捨五入して 表示させたいのですが、どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • クエリでのデータ更新について

    ACCESS2000で更新クエリの質問です。 フィールドの値の合計、カウントなどの集計値を計算するクエリから取り出された値を、更新クエリでデータを更新したいのですが、 「更新可能なクエリでありません」とエラーがでます。 LOOPする方法もあるのですが、できればクエリで一括更新したいと思います。 どなたかご教授お願いします。 やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。 <Aテーブル> コード  個数 1     1 1     2 1     3 2     4 2     4 3     5 3     6 <Bテーブル> コード  個数 1      2      3    ↓↓↓更新後 <結果:Bテーブル>   コード  個数 1     6 2     8 3     11

  • SQL詳しい方、助けてください。

    こんにちは。 UPDATE テーブルA SET フィールドA1 = '1' WHERE フィールドA2 =(SELECT フィールドB1 FROM テーブルB WHERE フィールドB2 = 'C0' OR フィールドB2 = 'C2' AND フィールドB3='') AND フィールドA3 = '' AND フィールドA4 <> '' というSQLを作成して、動作していたので安心していたら、 テーブルBのレコード数は1件のみだと思っていたら、複数存在する場合があるとのことで、 テーブルBのレコードを追加してみたところ、、 【サブクエリは複数の値を返しました。サブクエリが = 、!= 、<、<= 、>、>= のあとに続く場合や、 サブクエリが 1 つの式として使われる場合に複数の値は許可されません。】 というエラーで終了するようになってしまいました。 そこで、 UPDATE テーブルA AS A INNER JOIN テーブルB AS B ON A.フィールドA2 = B.フィールドB1 SET A.フィールドA1 ='1' WHERE B.フィールドB2 = 'C0' OR B.フィールドB2 = 'C2' AND B.フィールドB3='' AND A.フィールドA3='' AND A.フィールドA4 <> '' としてみました。 なんだか混乱してきて、結合条件があっているかが 自分でもよくわかんなくなっていますが。 しかも、 上記のSQLをSQL SERVER 2000のクエリアナライザで 実行すると、 【キーワード 'inner' 付近に正しくない構文があります。】 というエラーが・・・。 INNER 以下はいろいろおかしいんだろうな・・・と 思っていたのですが、まさか、そんなしょっぱなで引っかかるとは思いませんでした。 いろいろ、記述方法を変更してみたり、考えたんり したんですけど、情けないことにさっぱり解りません。 どなたかお力をお貸しください。 お願いします。

  • ACCESS初心者です。集計方法を教えてください。

    ACCESS初心者です。集計方法を教えてください。 ACCESS初心者です。集計方法を教えてください。 最近やっとクエリでBetweenを使えるようになったぐらいです。 ACCESSを使い集計を行いたいのですが、希望通りの集計結果になりません。 どなたかに教えてください。 どのような結果で出力したいかは下記にて説明させていただきます。 基になっているデータ 店舗コード|店舗名称|伝票日付  |取引NO  |金額   2     A    2009/8/1   100    500   2     A   2009/9/15   365    1500   2     A   2009/9/15   411    1000 3      B 2009/12/1 100 900 3      B 2010/6/15 850 1640 出力したい形(クロス集計として)                 |¥0~¥1,000||¥1,001~¥2,000| 店舗コード|店舗名称|  月 |取引件数   2     A   2009/8    1          2 A 2009/9 2 3 B 2009/12 1 3 B 2010/6 1 希望として 月単位の合計で各価格ごとに取引のあった件数が出力したいのです。 1度での出力が無理だとしてもせめ数回ぐらいでクエリを使って出力できればと思います。 使用しているソフトはACCESS 2003です

  • MS-ACCESS 教えてください。

    X、Y、Zと3つとも同じ内容のテーブルがあります。 (同じフィールド内容でX、Y、Zという「商品名」が ついたテーブルです。) 1)5つフィールドがあり、それぞれ商品番号(a) 顧客番号(b)、顧客名(c)、商品販売数(d)、 商品販売金額(e)という全く同じ内容です。 (b)と(c)は1対1の関係ですが、X、Y、Z 以外にテーブルはありません。 2)私が今回皆様のお知恵を借りたい内容は、 X,Y,Zのそれぞれのテーブルから (b)=(c)の顧客ごとに3つのテーブルを まとめて集計したいのです。 具体的には、例えばM社((b)のフィールドのみの 表示でOK)ではX、Y,Z((a)というフィールドの 内容で判別)それぞれの商品販売数(d)や販売金額(e)が いくらあって、その合計金額は、いくらですというレポートを 会社ごとにつくりたいのですが、私にはACCESSSが 難しくてわかりません。ちなみに社数はこのデータベースを テスト的に作っていますので、10社ほどです。  (1) (d)、(e)は1つのクエリーで同時に 出そうとは考えていません。同時にできれば 満足ですが、実際に作業は簡便に行えればと思って いるので、VBAを使ってどうの。。。という 高度な作業はする自信がありませんのでレポート自体が (d)(e)2枚になっても全く不満はありません。  (2) EXCELでは3つのテープルを1つにして、 フィルターをかければ1社ごとにできましたが、 ACCESSでこの作業を10社いっぺんに行って みたいので、お時間があるかたはご教示していただければ 幸いです。 よろしくお願いいたします。

  • クロス集計のスピードアップ

    Accessで数十万件のデータのクロス集計をおこなおうと思っているのですが1日程度時間がかかってしまいます。以下のプロセスでスピードアップが図れそうな事項がございましたらご教授ください。 -------------------------------------------- (1)テーブル「A」とテーブル「B」(両方とも数十万件)を「A」のIDをキーとして「B」のIDと紐付けし、テーブル「A」の全項目とテーブル「B」のある1項目をクエリを用いて出力します。 (2)(1)のクエリをテーブルに変換する。(←ここで非常に時間がかかってしまいます。) (3)(2)についてクロス集計を行う。 -------------------------------------------- (2)でテーブルに変換せずにクロス集計を行っても非常に時間がかかってしまいます。素人質問で大変恐縮ですが何とぞご教授ください。 よろしくお願いいたします。

  • MSDEのSQLについて

    DB初心者です。 通常のAcceessで支障なく使っていた以下のようなSQL文がMSDEのビューではエラーがかかって使えません。原因と対応法を教えて頂けないでしょうか? < 「テーブル1」の「フィールド1」と「フィールド2」の相関係数を算出するSQL文 > SELECT (Sum(([フィールド1]-(SELECT AVG([フィールド1]) FROM テーブル1))*([フィールド2]-(SELECT AVG([フィールド2]) FROM テーブル1))))/Sqr(Sum(([フィールド1]-(SELECT AVG([フィールド1]) FROM テーブル1))^2)*Sum(([フィールド2]-(SELECT AVG([フィールド2]) FROM テーブル1))^2)) AS 相関係数 FROM テーブル1; これがMSDEだと下のようなエラーになります。 ADOエラー: 集計やサブクエリを含む式に対して集計関数を実行することは出来ません。 どうしたいいでしょうか? また、MSDEや易しいTransactSQLを習得する良い方法があればアドバイスを頂きたいのですが。

  • 複数フィールドの最大値を行ごと抽出したい

    ACCESS2010を使用しています。 テーブルデータは以下です。 日付 コード 値a 値b 値c 2014/1/1 aaa 100 50 80 2014/1/1 aaa 80  60 30 2014/1/1 aaa 100 20 90 この時欲しいデータは 2014/1/1 aaa 100 50 80 のみです。 値aの最大値を行ごと抽出したいのです。 エクセルデータをリンクテーブルとしています。 値aを集計『最大』としてクエリを作成しましたがうまくいきません。 過去のSQLの質問なども見ましたが、ACCESS初心者のため理解できず困っています。 そもそも、SQL構文を使わずにクエリウィザードでこの抽出はできるものなのでしょうか… トンチンカンな質問でしたら申し訳ございません。