• ベストアンサー

アクセスのクエリについて教えてください。

アクセス超初心者です。 長文の質問になってしまって、申し訳ありません。 SQLは全く使えず、クエリだけの処理にしています。 どうやって質問してよいのか分からないので、マニュアルやインターネットで、さんざんヒントを探しているのですが、途方にくれ、勇気をもって質問することにしました。 是非、教えて頂けないでしょうか。 ――履歴テーブル―― [顧客No] [利用日] 0001   99/12/31 0001   00/01/01  0002   02/01/01 ――クラステーブル―― [クラス][金額] A \1,000 B   \800 ――契約履歴テーブル―― [契約No][顧客No] [契約(始)] [契約(至)][クラス] 1  0001    99/01/01   99/12/31 A 2  0001    00/01/01   00/12/31 B 3  0002    99/01/01   99/12/31   A 4 0002    00/01/01   00/12/31   B **履歴クエリ** [顧客No] [利用日] [クラス] [金額]  0001   99/12/31 A \1,000  0001   00/01/01 B \800  0002   02/01/01   A   \1,000  0002   02/01/01 B \800  ↑0002は1回しか利用していないのに上と同じ利用日が出てきてしまう。なので合計するときに不都合がでてきてしまう。 ??したいこと?? 1.履歴クエリに契約範囲内にあったクラスを表示し、金額を合計したい。 2.契約範囲内にないものについては[クラス]に”契約日未入力”と表示して、金額を表示しないようにしたい。 以上、2点なのですが、「利用日のクラスに合った金額を合計する」、という方法であれば、他の方法でもご存知なら教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.1

こんな感じなのでしょうか? SELECT 履歴テーブル.*, Nz(DLookUp("クラス","契約履歴テーブル","#" & Format([利用日],"yyyy/mm/dd") & "# Between [契約(始)] And [契約(至)] And [顧客No] = " & [顧客No]),"契約日未入力") AS クラス, CCur(Nz(DLookUp("[金額]","クラステーブル","[クラス] = '" & [クラス] & "'"),0)) AS 金額 FROM 履歴テーブル; と、サブクエリじゃなくてDLookupを使ってみました Null値じゃなくて、0にして数値として書式が設定できるようにしてあります [顧客No]は、数値 [クラス]は、文字 として、関数を作成してあるので、型が違うようなら手直ししてね

tora-betti
質問者

お礼

早速のお返事、ありがとうございます。 なんとか、できた模様・・・です。多分。 お二人の意見はプリントアウトして大事に保管しますね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

履歴クエリの利用日の抽出条件欄に Between [契約(始)] And [契約(至)] ただしアップされたサンプルでは 0002さんは契約がない日に利用していますから変な結果になりますね SQLは SELECT 履歴テーブル.顧客No, 履歴テーブル.利用日, 契約履歴テーブル.クラス, クラステーブル.金額 FROM (クラステーブル INNER JOIN 契約履歴テーブル ON クラステーブル.クラス = 契約履歴テーブル.クラス) INNER JOIN 履歴テーブル ON 契約履歴テーブル.顧客No = 履歴テーブル.顧客No WHERE (((履歴テーブル.利用日) Between [契約(始)] And [契約(至)]));

tora-betti
質問者

お礼

早速のお返事、ありがとうございます。 なんとか、できた模様・・・です。多分。 お二人の意見はプリントアウトして大事に保管しますね。 ごめんなさい、早いもの勝ちで加点させて頂きました。

tora-betti
質問者

補足

>0002さんは契約がない日に利用していますから変な結果になりますね そうなんです。都合上、契約日の入力作業は後になってしまうので。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access クエリ このレコードセットは・・・

    いつもお世話になります。 Accessで下記の様にクエリを作成しましたが、”このレコードセットは更新できません”と出てしまいます。 ■テーブル1  ・顧客ID(主キー)  ・顧客名  ・住所  ・TEL ■テーブル2  ・顧客ID  ・取引ID(主キー)  ・請求金額 ■クエリ1(集計クエリ)  ・顧客ID グループ  ・請求金額合計: Sum(請求金額) 合計 ■クエリ2(実際に使用するクエリ)  ・顧客ID(テーブル1)  ・顧客名(テーブル1)  ・住所(テーブル1)  ・TEL(テーブル1)  ・請求金額合計(クエリ1) このクエリ2を開いて更新しようとしても、”このレコードセットは更新できません”と左下に表示されて更新できません。 ・請求金額合計(クエリ1)を除けば問題なく更新できます。 ですが1顧客に対して通算で幾ら請求をしたかとその顧客のデータを同一クエリで表示・更新したいので、意味をなさなくなってしまいます。 どなかた良い方法をご教授下さいませ。

  • アクセスのクエリについて教えてください。

    アクセス初心者です。 AテーブルとBテーブルを合体したCテーブルを作成したいのですが、 クエリを使って1工程でできませんでしょうか。 レコードが1000を越えると大変な作業になりますので、 何か良い方法を探しております。宜しくお願いします。 Aテーブル 顧客No  名前  住所  1     鈴木  東京  2     田中  横浜 Bテーブル 顧客No  名前  電話  1     鈴木  03  3     山田  044 Cテーブル 顧客No  名前  住所  電話  1     鈴木  東京  03  2     田中  横浜  3     山田      044              以上

  • Access クエリとテーブルの合計値を一緒に表示

    クエリの合計値と親テーブルの合計値をフォーム上にて表示したいのですが、 うまく行かずに困っています。 クエリにて抽出した値の合計 Sum([Q抽出クエリ],[利用金額]) と、 抽出前の合計 Sum([T検索履歴],[利用金額]) を両方表示させたいです。 現状は下記の通りです。 ■使用テーブル・使用クエリ テーブル  [T検索履歴] ------- フィールド [検索履歴ID] [キーワード] [利用金額] クエリ   [Q抽出クエリ] …T検索履歴から特定のキーワードを含むレコードを抽出 フィールド [検索履歴ID] [キーワード] [利用金額] ■フォーム フォームのレコードソース … [Q抽出クエリ] ■現状と問題点 (1)[Q抽出クエリ]にて、キーワード『保護』を含むレコードを抽出します。 (2)抽出されたレコードの[利用金額]を、非連結テキストボックス tBox1 に表示します。 式:tBox1のコントロールソース =Sum([利用金額数]) (3)全体の利用金額合計を知るために、 [T検索履歴]の[利用金額]の合計値を非連結テキストボックス tBox2 に表示させます。 (ここが望む結果になりません。) 式:tBox2のコントロールソース =Sum([T検索履歴],[利用金額数]) 実行した結果 tBox1 … 抽出されたレコードの[利用金額]合計を表示 tBox2 … 上に同じ 望んだ結果 tBox1 … 抽出されたレコードの[利用金額]合計を表示 tBox2 … [T検索履歴] の[利用金額]合計を表示 以上、どうしたら良いのか分からず困っています。 宜しくお願い申し上げます。

  • 【Access2007】クエリを教えてください

    Access2007を使用しています。 以下のような3つのテーブルがあります。 テーブルA No    項目a 1     ○ 2     ○ 3     ○ 5     ○ テーブルB No    項目b 1     ○ 4     ○ 5     ○ テーブルC No    項目c 1     ○ 2     ○ 4     ○ 6     ○ これらの3つのテーブルから以下の結果を返すクエリはどうすればいいのでしょうか? No    項目A   項目B   項目C 1     ○     ○     ○ 2     ○            ○ 3     ○ 4            ○     ○ 5     ○     ○ 6                  ○

  • アクセスの削除クエリーについて

    アクセス2000の削除クエリーを実行すると、「削除できません」の表示がでます。テーブルを2つ(AとB)追加して、顧客CDでリレーションを組みます。テーブルAからはアスタリスクマークをドラッグしてますので、FROMがでます。テーブルBの顧客CDをドラッグするとWHEREがでます。つまり、テーブルBにある顧客CDを全部テーブルAから削除したいのですが、データウィンドウは表示されますが、削除を実行すると、「削除できません」の表示がでます。アクセス2.0では可能だったのですが、アクセス2000ではなぜできないのでしょうか??

  • アクセス クロス集計クエリ 縦の合計

    テーブル1には 会社名 取引日 金額 A社 2014/01/01 ¥100 B社 2014/01/02 ¥200 A社 2015/01/01 ¥500 というデータがあります。 このテーブル1を基にクロス集計クエリで TRANSFORM Sum([テーブル1].[金額]) AS 金額の合計 SELECT [テーブル1].[会社名], Sum([テーブル1].[金額]) AS [合計 金額] FROM テーブル1 GROUP BY [テーブル1].[会社名] PIVOT Format([取引日],"yyyy"); というクエリを自動生成しました。 この時、横の合計ではなく縦の合計(年ごとの合計)を表示するには良いでしょうか? サブクエリというのを使うようですが、どうすればいいかわかりませn。 よろしくお願いします。

  • ACCESS2003クエリの結合した表示形式が

    ACCESS2003でクエリを作成しました。各テーブルのフィールドを結合したのですが 表示形式が思ったようになりませんでした。 【Aテーブル】 フィールド:学部NO データ型:数値型 書式:00 【Bテーブル】 フィールド:学科NO データ型:数値型 書式:00 【ABクエリ】 フィールド:学籍NO:[Aテーブル]![学部NO]&[Bテーブル]![学科NO] 【ABクエリ】の結果が数字が4桁表示されません。 (例) 0101 と表示してほしいのですが、   11  と表示されます。 各テーブルでは、01と表示されるのですが・・・。 宜しくお願いします。

  • Accessクエリにて

    お世話になります。 下記テーブルがあります。 ■型番テーブル ID 型番 数量 1  A   1 2  B   1 3  C   1 4  D   1 5  E   1 ■発売日テーブル ID 型番 発売日    削除 1  A   2010/01/01 False 2  B   2010/05/01 False 3  C   2011/03/01 False 4  D   2011/05/01 True 5  E   2011/06/01 False ■上記テーブルを用いたクエリ ・型番テーブルの「型番」と発売日テーブルの「型番」を  紐付ける ・表示したいフィールドは「型番」「発売日」。 ・表示したいのは型番テーブル全件(5レコード)。 ・発売日テーブルの削除がTrueの場合、発売日を空白とする。 *************** ここで質問です。 型番テーブルの全件を表示したいところですが、条件として発売日テーブルの 削除がFalseである為、型番Dが表示されません。 発売日テーブルであらかじめ削除がFalseのみでクエリを作成し、そのクエリと 型番テーブルの「型番」で紐付ければ全件表示されることは分かっており ますが、1つのクエリで表示する方法をご教授頂ければと思います。 宜しくお願い致します。

  • アクセス クエリによる合計・平均値の表示方法

    アクセス クエリによる合計・平均値の表示方法についてご質問いたします。 まったくの初心者ですので、宜しくお願いいたします。 各テーブルから任意の期間をクエリを利用して表示させた時に、その期間の合計・平均値を 表示したいと考えております。 現在作成したクエリでは、任意期間のすべてのデータが表示されてしまいます。 (現状のクエリ=1月10日~11日) 種別    日付      曜日   店名   人数A   人数B   人数C ドリンク  2012/01/10  火    A店     10     10     40 ドリンク  2012/01/11  水    A店     10     10     40 ドリンク  2012/01/10  火    B店     15     15     30 ドリンク  2012/01/11  水    B店     15     15     30 (表示させたいクエリ=1月10日~11日平均) 種別    日付                曜日   店名   人数A   人数B   人数C ドリンク  2012/01/10~2012/01/11  非表示    A店     10     10     40 ドリンク  2012/01/10~2012/01/11  非表示    B店     15     15     30 全体集計                                合計25  合計25  合計70 上手く伝わらないかもしれませんが、上記のように表示させたいと考えております。 是非とも皆様のアドバイスを頂きたいと思いますので、宜しくお願いいたします。     

  • アクセス 2つのクエリーの集計について

    A: 選択クエリ|薬品コード|名称|数量|        | 001  |A  |1  | | 002  |B  |2  | | 003  |C  |3  | B: 選択クエリ|薬品コード|名称|数量|       | 001  |A  |1  | | 003  |C  |2  | | 004  |D  |3  | という2つのクエリから、 |     A   |    B |合計| |薬品コード|名称|数量|薬品コード|名称|数量| | | 001  |A  |1  | 001   |A |1  |2  |  | 002  |B  |2  | |  |  |2 |  | 003  |C  |3  | 003   |C |2  |5  |  |     |  |  | 004   |D  |3  |3  | というように、2つのクエリの結果も表示し、合計も表示 できるようなクエリの作り方を教えてください。 AとBの薬品コードを結合しても、両方の薬品コードを表示 できるような結合プロバディはないようにおもうのですが。 テーブルにしてからクエリにしないといけないのか、 そのあたりもわかりませんが教えてください。 よろしくお願いします。  質問内容書くときはうまくいっているのに、投稿だと線がずれているんですが、わかりますでしょうか?  

専門家に質問してみよう