- ベストアンサー
ACCESSのテーブルで同一の番号で年齢が一番上の人を代表者にする方法とは?
- 指定された条件に従って、ACCESSのテーブルで同一の電話番号が存在する場合に年齢が一番上の人を代表者とし、他の人を家族として表示する方法について教えてください。
- 名前、電話番号、年齢のフィールドを持つテーブルがありますが、同じ電話番号の人が複数存在する場合には年齢が最も高い人を代表者とし、他の人を家族として表示したいです。
- ACCESSのテーブルにおいて、同じ電話番号を持つ複数の人が存在する場合には、年齢が最も高い人を代表者とし、他の人を家族として表示したいです。このようなクエリの組み方を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
電話番号ごとに年齢の順で連番を振るクエリを作り 連番: "家族" & DCount("*","テーブル名","電話番号='" & [電話番号] & "' and 年齢>=" & [年齢]) このクエリをクロス集計クエリに変えて 電話番号:行見出し 連番:列見出し 名前:値:先頭 と指定します SQLは TRANSFORM First(テーブル名.名前) AS 名前の先頭 SELECT テーブル名.電話番号 FROM テーブル名 GROUP BY テーブル名.電話番号 PIVOT "家族" & DCount("*","テーブル名","電話番号='" & [電話番号] & "' and 年齢>=" & [年齢]); 表示の順を連番=1を左端にします 結果 家族1 電話番号 家族2 家族3 山田太郎 00-0000-0000 山田花子 山田一郎 田中次郎 11-1111-1111
その他の回答 (1)
- PPancho
- ベストアンサー率27% (26/96)
うーん。過去に_tanaka_さんと全く同じことをしようとしましたが、 横に何列(家族が何人)いるのか指定できないので、アクセスの クエリ(SQL)でやるのはむずかしそうです。 結局そのときは、テーブルから世帯主と家族とを識別する フラグを設けて、クエリー抽出し、そのデータからご希望の 世帯集計テーブルをつくるVBAプログラムを作りました。 (家族のMAX件数は決める必要があります) 今回の場合少しがんばれば、世帯主のフラグがなくとも 世帯年長者のクエリと、それに合致しない家族のクエリは 作れるでしょう。 ただデータ件数が万件の世界になるとパソコンの性能で パフォーマンスに依存します。
お礼
回答ありがとうございます 今回はNo,2回答の方の方法で実施します またよろしくお願いします。
お礼
ありがとうございます おかげで作成したいものができました。 SQLで一発でできるとは思いませんでした。 助かりました。ありがとうございました。