• ベストアンサー

accessである期間にいる人のクエリ抽出をしたい

access2002を使っています。 テーブルAで、それぞれの人の活動開始日と終了日のデータを もっています。 名前    開始日    終了日 ─────────────────── 井上さん  2005/07/01  2005/11/30 渡辺さん  2005/09/22  2005/09/23 佐藤さん  2005/10/03  2005/10/05  ・  ・  クエリで、「2005/10/01~31まで活動した人」 (テーブルAで、活動期間の中に10月が1日でも含まれている人」を 抽出したいのですが、どうすればよいのかわからず困っています。 テーブルAで言えば、10月の活動者だと、 井上さんと佐藤さんを抽出したいのです。 よろしくお願いします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.8

失礼しました。ざっと書いたもんで・・条件を間違えました。あと<>の次に=が抜けてました。付け加えてください。 SELECT テーブルA.名前, テーブルA.開始日, テーブルA.終了日 FROM テーブルA WHERE (((ベーステーブル.開始日<=#2005/10/31#) AND ((ベーステーブル.終了日)>=#2005/10/01#)); です。 SQLは#2005/10/31#のように記述してもJetが勝手に#10/31/2005#に書き換えてくれます。 抽出条件は WHERE (((テーブルA.開始日) Between #2005/10/01# And #2005/10/31#)) OR (((テーブルA.開始日)<=#2005/10/01#) AND ((テーブルA.終了日)>=#2005/10/01#)); でも同様の結果を返してくれます。 もどちらでもお望みの抽出が出来ます。

sacsac5
質問者

お礼

ありがとうございました! 大変参考になりました。

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

その他の回答 (7)

noname#27115
noname#27115
回答No.7

#5のSQLの方間違っていました。 SELECT [テーブルA].開始日, [テーブルA].終了日, [テーブルA].名前 FROM 名前 WHERE ((([テーブルA].開始日)<=#10/31/2005#) AND (([テーブルA].終了日)>=#10/1/2005#));

sacsac5
質問者

お礼

ありがとうございました! 大変参考になりました。 何度もありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#57890
noname#57890
回答No.6

すみません、No.1の回答は間違いです。 開始日<=2005/10/31、終了日>=2005/10/1、を抽出条件に設定するのだと思います。

sacsac5
質問者

お礼

ありがとうございました! 大変参考になりました。 いろいろやってみます。

全文を見る
すると、全ての回答が全文表示されます。
noname#27115
noname#27115
回答No.5

QBEだと 開始日が <=#2005/10/31# 終了日が >=#2005/10/01# SQLだと SELECT [テーブルA].開始日, [テーブルA].終了日, [テーブルA].名前 FROM テーブルA WHERE ((([テーブルA].終了日)>=#10/1/2005#)); でもOKかもです。

全文を見る
すると、全ての回答が全文表示されます。
noname#27115
noname#27115
回答No.4

すみません。#2はちがっています。(;.;)

全文を見る
すると、全ての回答が全文表示されます。
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

SQLビューでクエリを作るなら下記をコピーしてください。 SELECT テーブルA.名前, テーブルA.開始日, テーブルA.終了日 FROM テーブルA WHERE (((テーブルA.開始日)>#2005/10/01#)) OR (((テーブルA.開始日)<#2005/10/31#) AND ((テーブルA.終了日)>#2005/10/31#)); これで抽出できます。 クエリウィザードで作るなら テーブルAを元にクエリウィザードでクエリを作り開始日の抽出条件に>#2005/10/1#を入れます。 開始日の「または」の欄に<#2005/10/31# 終了日の抽出条件の「または」の欄に>#2005/10/31#を入れればできます。 開始日が2005/10/01より後の人または開始日が2005/10/31より以前で終了日が2005/10/31より後の人 という抽出条件でできます。

全文を見る
すると、全ての回答が全文表示されます。
noname#27115
noname#27115
回答No.2

>クエリで、「2005/10/01~31まで活動した人」 フィールド:終了日 テーブル:テーブルA 抽出条件: >=#2005/10/01# または: <=#2005/10/31# でどうでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
noname#57890
noname#57890
回答No.1

終了日が11月1日以降の人を抽出すれば、10月31日まで活動した人がピックアップされるのではないでしょうか?

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

関連するQ&A

  • accessである期間にいる人のクエリ抽出をしたい

    OFFICE2003 を使っています。 テーブルAで、それぞれのデータ入力日をもっています。 名前    入力日     ───────────── 井上さん  2007/07/01 鈴木さん  2007/08/01   渡辺さん  2007/08/22   佐藤さん  2007/09/03    ・  ・  クエリで、データ入力日「2007/08/01~08/31範囲の人」の条件で 抽出したいのですが、どうすればよいのかわからず困っています。 テーブルAで言えば、8月のデータ対象者だと、 鈴木さんと渡辺さんを抽出したいのです。 VisualBasicとかは、まだ勉強不足でわかりません。 よろしくお願いします。

  • Accessでのレポートでのクエリ抽出について

    Access2000のクエリについて教えて頂きたいのですが、現在顧客テーブルに何百件のデータがあります。それをレポートで期間指定して抽出したいのですが(例:10月30日~11月27日)このような期間条件に該当するクエリを良ければご教授頂けたらと思います。 顧客テーブルの訪問日時が該当項目になります。

  • Accessで複数のクエリの抽出条件

    Accessで複数のクエリの抽出条件にBetween[開始日]And[終了日]と入れて、マクロでその複数のクエリを次々に開いていくというものが入っているのですが、クエリが10以上あるので、[2005/01/01][2005/01/31]とを10セット以上入力しないとデーターが出てこない状態です。これを一度の期間指定入力で10個以上のクエリに同じ期間が自動で入るような方法を知りたいのです。 なにぶん、Accessが初心者で全くわからない状態ですので説明自体の意味がわからないかもしれません。よろしくお願いします。

  • クエリにおける複数値の抽出について

    クエリにおける複数値の抽出について access2007を使用しています。 テーブルA,テーブルBを元にクエリCを作成しました。 テーブルAには担当というフィールドがありますが,複数の値の入力を許可しており,テーブルBを値集合ソースとして設定してあります。 クエリCにおいて,以下のような抽出をしたいと考えています。 例えば, ID_所員ID_担当 001_B001,B002,B003_山田,佐藤,鈴木 002_B002_佐藤 003_B001,B002_山田,佐藤 において,所員IDの抽出条件のところにB002と入力すると,ID002のみが抽出されるといった感じです。 B002と抽出条件を設定すると,B002を含む全てのレコードが抽出されてしまいます。この場合ですと,ID001から003の全てのレコードが抽出されます。 担当のところで抽出条件を佐藤と設定し,さらに所員IDの抽出条件のところに,Len関数を使用して4文字以下とすれば…とも考えたのですが上手くいきません。 もし,良い方法があればご教示ください。

  • ACCESS2007 クエリの抽出条件について教えてください

    ACCESS2007で、ルックアップ列(コンボボックス)を使用したテーブルがあります。そのテーブルをクエリにて、コンボボックスの条件別に抽出させたいのですが、その抽出条件を教えていただけませんでしょうか。 コンボボックスリストの中身(A,B,C)       A→Aのみ抽出したクエリ       B→Bのみ抽出したクエリ       C→Cのみ抽出したクエリ という風に作成したいのですが。 お忙しいところ申し訳ありません。よろしくお願いします。

  • Accessのクエリデザインで条件抽出のテキストボックス

    アクセス初心者です。 既に作成済みのクエリを実行する時、いつも「開始日」と「終了日」を入力するテキストボックスが 出てきていました。 例えば開始日のボックスに2009/04/01を入力してEnterを押すと次に終了日を入力する ボックスが出てきて2009/05/31と入力して実行するとそのデータベースのその日付の期間の データが抽出されるようになっていました。 あるとき必要がありそのクエリのデザインを開き別のテーブルの抽出条件を追加したり していたときに、その日付(登録日時というテーブル)の部分の抽出条件を消してしまいました。 元通りにしたいのですが、どのような式が入力されていたのかわかりません。 私なりに調べてみて、テキストボックスは表示されないのですが、クエリのデザインを 開いている状態でそこに 「Between #2009/04/01# And #2009/05/31#」などと日付を入力すればできることは わかったのですが、テキストボックスが表示されるように元通りにすることはわかりませんでした。 お分かりになる方、教えてください。

  • ACCESSクエリー処理で

    ACCESS2000でのクエリー処理において下記方法を教えてください。 テーブルA   商品A 開始日 終了日   商品A 開始日 終了日   商品B 開始日 終了日   ※商品単位に開始日や終了日が違うレコードが複数存在します。 上記テーブルをクエリーで下記イメージに処理できますでしょうか?   商品A 開始日 終了日 開始日 終了日   商品B 開始日 終了日   

  • アクセスのクエリの抽出について

    当方:XP アクセス2003 アクセスのテーブルで作ったデータを クエリを使って抽出する場合・・・ 1 2 3 という数字で判別しているデータがあり、 1だけを抽出、2だけを抽出ということはできるのですが、 1or2 2or3 というような抽出はできるのでしょうか? よろしくお願いします。

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

     アクセス初心者です。  例えばテーブル1に以下のようなデータがあります。  A     鈴木  佐藤  もう1つテーブル2があります  B  1  2 そこでクエリーを作成し テーブル1とテーブル2の列を1つにまとめます。この時テーブル1とテーブル2に関連性はなく、リレーションシップはつけません。そうすると A  B  鈴木 1 鈴木 2 佐藤 1 佐藤 2 となります。 イメージ的に A  B 鈴木 1 佐藤 2 というように単純に列をつけたいのです。エクセルなら簡単に出来ますがアクセスでは出来ないでしょうか。

  • Access データ抽出および集計の方法

    Access2016を使って下記データ抽出および集計をしたいのです。 テーブルA 商品CD 契約日 会社CD テーブルB 会社CD 契約期間開始日 契約期間終了日 テーブルC 商品CD 商品種別 テーブルAとテーブルCの商品CDをリレーション テーブルAとテーブルBの会社CDをリレーション 集計したいデータ 契約日が期間開始日~期間終了日に含まれるテーブルAのデータを抽出したいです。 これが取れれば、クロス集計で会社CD毎の商品種別の数を最終的に計算します。 期間開始日~期間終了日はそれぞれの会社CD毎に違います。 また、同じ会社CDに開始日~終了日以外の日付データも含まれています。 このような抽出はできないでしょうか?

専門家に質問してみよう