- 締切済み
【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です。よろしくお願いします。
- nk1800705
- お礼率66% (16/24)
- その他(データベース)
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
でなければ コード 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)
テーブル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で教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- Access初心者です
ほぼ触ったことがない状況なのに仕事でExcelからアンケート調査結果をクロス集計で出すことになりました。 単数回答はなんとか出来るようになったのですが複数回答のクロス集計が上手くいきません。 どなたが解りやすく教えていただければ有難いです。 内容は,1つの設問に8つの選択肢があます(いくつでも選択可)。それぞれを集計の際にex.)問1_1,問1_2,・・・問1_8と設定して入力をしています。 Excelのデータは全て,入力のあったものに対し「1」を入力しており,無回答については空白で処理をしています。 その設問と,仮に「問2:男性,女性,無回答」という設問をクロスさせようとする場合,どういった処理を行えばよいのでしょうか。デザインビューでの処理,SQLでの処理という部分でも右往左往しております。 環境はXP,Access2003です。 乱筆乱文失礼いたしました。是非ご指導宜しくお願いします。
- ベストアンサー
- Windows XP
- 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で教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- クエリでのデータ更新について
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構文を使わずにクエリウィザードでこの抽出はできるものなのでしょうか… トンチンカンな質問でしたら申し訳ございません。
- 締切済み
- その他MS Office製品