• ベストアンサー

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

アクセス2002 平成20年10月1日の時点で、3歳以下の人を抽出したいです。 フィールドは、氏名・年号・生年・月・日に分かれています。 クエリ 氏名 年号 生年  月  日 A   平成 20   2  20 B   平成 17   9  30 C   平成 17  10   1 D   平成 17  10  31 E   平成 18   5   5 F   平成 19   4   7 G   平成 17  11  20 H   平成 20  10   1 I    平成 17  9   29 抽出したい人 氏名 年号 生年  月  日 A   平成 20   2  20 C   平成 17  10   1 D   平成 17  10  31 E   平成 18   5   5 F   平成 19   4   7 G   平成 17  11  20 H   平成 20  10   1 よろしくお願い致します。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.2

tab1: テーブル [ID]_[氏名]_[年号]_[生年]_[月]_[日] __1___A______平成_____10___10___10 __2___B______平成_____11___11___11 __3___C______平成_____12___12___12 クエリ1: クエリ [ID]_[氏名]_[生年月日] __1___A______1998/10/10 __2___B______1999/11/11 __3___C______2000/12/12 SELECT tab1.ID, tab1.氏名, CDATE([年号] & [生年] & "/" & [月] & "/" & [日]) AS 生年月日 FROM tab1; クエリ2: クエリ [ID]_[氏名]_[年号]_[生年]_[月]_[日] __1___A______平成_____10___10___10 __2___B______平成_____11___11___11 SELECT * FROM tab1 WHERE GetAge(Cdate([年号] & [生年] & "/" & [月] & "/" & [日]),CDATE("2005/10/1"))>4; 年齢そのものを抽出条件にするように GetAge関数で年齢を求めてみました。 [イミディエイト] ? GetAge(CDATE("2004/1/1"), CDATE("2004/12/31")) 0 ? GetAge(CDATE("2004/1/1"), CDATE("2005/1/1")) 1 ? GetAge(CDATE("2004/2/29"), CDATE("2005/2/27")) 0 ? GetAge(CDATE("2004/2/29"), CDATE("2005/2/28")) 1 ? GetAge(CDATE("2004/2/29"), CDATE("2005/3/1")) 1 ? GetAge(CDATE("2004/2/29"), CDATE("2008/2/27")) 3 ? GetAge(CDATE("2004/2/29"), CDATE("2008/2/28")) 3 ? GetAge(CDATE("2004/2/29"), CDATE("2008/2/29")) 4 Public Function GetAge(ByVal Birthday As Variant, ByVal Hiduke As Variant) As Long On Error GoTo Err_GetAge   If Month(Hiduke) = 12 Then     GetAge = DateDiff("yyyy", Birthday, Hiduke) + _        (Format(Birthday - 1 - (Day(Birthday) = 1), "mm/dd") > Format(Hiduke - (Day(Birthday) = 1), "mm/dd"))   Else     GetAge = DateDiff("yyyy", Birthday, Hiduke) + _          CDbl((Format(Birthday - (Day(Birthday) = 1), "mm.dd")) >= CDbl(Format(Hiduke + 1 - (Day(Birthday) = 1), "mm.dd")))   End If Exit_GetAge:   Exit Function Err_GetAge:   GetAge = -1   Resume Exit_GetAge End Function 【注意】GetAge関数は、たった今修正したばかり。(多分、未だ、不完全かと思います!)     ですから、上記の僅かに8件のテストしか行っていません。     仮に利用される場合は自己責任でお願いします。

g_girl
質問者

お礼

Husky2007様、親切な回答をありがとうございました。 Public Function GetAge は大変参考になりました。 わざわざ作成して頂き助かりました。

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

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

条件は生年月日が平成17年10月1日以降ということですね。 条件式は以下の通りです。 CDate(年号 & 生年 & "/" & 月 & "/" & 日) >= #2005/10/1#

g_girl
質問者

お礼

nda23様、回答をありがとうございます。 昨日も回答をして頂き、助かっています。 アドバイスを頂き「CDate関数」をネットで調べてみました。 分かりやすくて、使いやすいと思いました。

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

関連するQ&A

  • アクセスのクエリで出生時~小学校就学前を抽出

    アクセス2002 クエリにて下記2つの抽出方法を教えて下さい。 【抽出条件1】 出生時~小学校就学前(6歳に達した最初の3月31日まで) 【抽出条件2】 小学生~中学生 (4月1日時点で6歳以上) (15歳に達した最初の3月31日まで) [Q_顧客]というクエリを作っています。 5つのフィールドがあります。 氏名・年号・生年・月・日 氏名・年号はテキスト型 生年・月・日は数値型 氏名 年号 生年 月 日 花子 昭和 46 1 15 太郎 平成 15 3 13 春子 平成 17 1 11 次郎 平成 14 6 23 夏子 平成 18 4 29 秋子 平成  9 7 12 上記のクエリから、 ・出生時~小学校就学前 ・小学生~中学生 の2つを抽出したいのですが、どのようにしたら良いか教えて下さい。 日付型で作成してなく、年齢の出し方も分かりません。 データ数も多いので、困っています。 よろしくお願い致します。

  • アクセスのクエリの抽出条件について教えて下さい

    クエリの使い方を教えて下さい(アクセス2003) 負担金が限度額より小さい人を抽出したいです。 クエリ名/限度額より小さい人 氏名 負担金 限度額 A    600  600 B     0 C    450  600 D     0 E    800  800 F    700  800 G     0 H    600  600 I    450 J    800 K    800  800 L     0 M    450 N    450  450 O    800 Q    800  800 限度額には「null」データ(空白)があります。 限度額が「null」ということは、無制限という意味です。 「負担金」が「限度額」より小さい人を抽出したいです。 「負担金」が「0」、「限度額」が「null」(無制限)の人の判断も、「負担金」が「限度額」より小さい人という扱いになります。 抽出したい人は、下記になります。 氏名 負担金 限度額 B     0 C    450  600 D     0 F    700  800 G     0 I    450 J    800 L     0 M    450 O    800 「抽出条件」をどのように設定すればよろしいでしょうか、お願い致します。

  • 関数で2つの条件から抽出する表を作りたい。

    A1は手入力D4手入力、H2は=D2&C2 担当者と週で検索して抽出する式を教えて下さい。 上手く出来なくて1行しか抽出しないんです。  A   B  C      D   E   F  G   H 1担当者 沼田 週    1 2 番号 日付 週 担当 企業 名前 住所 検索用 3 1 7月1日 1 沼田 a 高橋 土浦 沼田1 4 2 7月2日 1 佐藤 a 山田 阿見 佐藤1 5 3 7月2日 1 沼田 r 沖田 水戸 沼田1 6 4 7月7日  1 沼田 c 斎藤 土浦 沼田1 7 5  7月9日 2 佐藤 h 鈴木 牛久 佐藤2 8 6 7月14日 3 佐藤 d 河合 土浦 佐藤3 9 7 7月15日 3 高橋 e 吉田 阿見 高橋3 10 8 7月20日 4 高橋 e 木田 水戸 高橋4 11 9 7月4日 1 沼田 g 飯田 牛久 沼田1 上記の表から1週目だったら、1週目の担当者のデータをシート2の表に抽出 週2だったら2週目の担当者データを抽出 A1・D1は手入力 A3は=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) シート2     A   B   C  D  E  F  G 1  担当 沼田 週 1 2  番号 日付  週  担当  企業  名前   住所 3  1  7月1日  1  沼田   a    会田   牛久 4  4  7月2日  1  沼田   r   沖田   水戸 5  6  7月7日  1  沼田   c   斎藤  土浦  6  9  7月4日  1  沼田   g   飯田  牛久 上記の様にシート2に表示したいんです。 細かく教えて下さい。何度やっても1行目のデータしか抽出しないんです。 A3=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) B3=IF($A3="","",IF(VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0)="","",VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0))) A4の2行目以降1になってしまって同じ物しか出ないんです。 Aの番号の抽出方法の式を教えて下さい。

  • 条件1つで複数の値を抽出することはできませんか。

    エクセルのことなのですが、条件1つで複数の値を抽出してきたいと思っています。 しかし、様々な本やインターネットのサイトを参照したのですがうまくできません。 内容なのですが、「シート1」というシートがありこのシートを「シート2」のように番号で分けて、横に並べるようなシートを作りたいと思っています。 シート1 番号 品目 100 A 100 B 101 C 101 D 101 E 101 F 101 G 101 H 101 I 102 J 103 K 103 L シート2 番号 品目 100 A B 101 C D E F G H I 102 J 103 K L すみませんが教えていただけないでしょうか。 よろしくお願いします。

  • 条件付でのパターン抽出がわかりません

    以下のような条件でのパターンで作成される文字列を抽出したいと思い、 処理を考えるのですがわかりません。 ヒントでも結構ですので、ご教授願います。 条件1  ○={a,b,c,d}  △={e,f,g}  □={h,i} 条件2  ○2つ、△2つ、□1つを選択。   ex.)○○△□△, ○△□○△, ○△△□○, ... 条件3  ○から重複しない2文字、△から重複しない2文字、□からは重複しない1文字を選択。   ex.)○={a,b}△={e,g}□={h}... 上記条件により作成される5文字の全てのパターンを抽出したい場合、 どのように考えればよいでしょうか? (条件2の全パターン)*(条件3の全パターン)で抽出可能?? よろしくお願いします。

  • エクセル、任意の「行」だけを抽出したい。

    こんなことできますか? A1:F100のセル内にランダムに数字が入っています。 質問1) この中から 1行目→3行目→5行目と一つ飛ばしで入っているデータを抽出してH1:M100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 A1-B1-C1-D1-E1-F1 A2-B2-C2-D2-E2-F2 A3-B3-C3-D3-E3-F3 A4-B4-C4-D4-E4-F4 A5-B5-C5-D5-E5-F5 A6-B6-C6-D6-E6-F6 A7-B7-C7-D7-E7-F7 ・・・ A100-B100-C100-D100-E100-F100 の中から A1-B1-C1-D1-E1-F1 A3-B3-C3-D3-E3-F3 A5-B5-C5-D5-E5-F5 ・・・ を抽出して H1-I1-J1-K1-L1-M1 ・・・ H100-I100-J100-K100-L100-M100 の範囲内に表示させたいです。 質問2) 同様に、 1行目→4行目→7行目と二つ飛ばしで入っているデータを抽出してO1:T100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 ※ 説明がわかりにくいかもしれませんが、よろしくお願いします。

  • マイクロソフトアクセスの抽出

    マイクロソフトアクセス2010の使い方の質問です。 次のようなテーブルがあります。 ID   名前1   名前2   名前3 1    A      B○     C 2    D○     E       F○ 3    G      H○     I○ このデータで○がついているもののみを抽出し ID   名前(○あり) 1    B○ 2    D○、F○ 3    H○、I○ このようなテーブルを作成するにはどうしたらいいですか? 各行に必ず○は1つ以上あります。 アクセスは、ド素人ですよろしくお願いします。

  • エクセルで条件に合わせて複数データを抽出したい

    シート1に基本データ(基データ)があり、シート2のセル内に条件を入れて、該当のデータをシート1から引っ張りたい。 具体的には、シート1に基本データ  ナンバ- 1 1 2 2 2 3 4 4 4  該当データ A B C D E F G H I シート2に 条件内容 1を入れてA B (複数データ)      2を入れてC D E       3を入れてF -----と、こんな具合になりたいのですが?   VLOOKUP は複数の抽出なので駄目でした。   

  • Access クエリでの抽出条件の質問です。

    Access初心者です。宜しくお願いします。 選択クエリで、選択したフィールド同士を比較して条件に合えば表示したいのですが、うまくいきませんご伝授お願いします。 (例) フィールド名 A B C D の4つのフィールドがあります。 AとBを比較して同じでなければ表示、又はCとDを比較して同じでなければ表示 Aのフィールドの抽出条件に <>B 「or」で入力しました。 Cのフィールドの抽出条件に <>D の二つの条件を入力しましたがうまく条件にみたしません。A~Dまでのデータは条件に合うように登録されています。 宜しくお願いします。

  • 巨大なCSVの加工(指定列のみの抽出)について

    巨大なCSVの加工(指定列のみの抽出)について 下記のような構成のCSVファイルがあります。 "ID","a","b","c","d","e","f","g","h","i","j","k","l","m" "0001","a","b","c","d","e","f","g","h","i","j","k","l","m" "0003","a","b","c","d","e","f","g","h","i","j","k","l","m" "0004","a","b","c","d","e","f","g","h","i","j","k","l","m" ・ ・ ・ 例えば、 ここから"ID"列と"c"列と"f"列のみ抽出して新たなCSVファイルで保存。 という処理を行いたいのですが、行数が5000万行近くあり、ファイルサイズが80GB程あるので エクセルはおろかアクセスでも開くことができません。 テキストエディタの秀丸64bit版なら開くことができますが、指定列の抽出方法が分かりません。 秀丸のマクロでもVBSでも良く、また膨大な待ち時間がかかっても構わないので実現する方法について お知恵をお貸しください。