- ベストアンサー
アクセスでデータ抽出
A列に数字が、B列にデータ、C列には○と×が入っています。 A列は同じ数字が複数行あることもあり、 同じ数字でも○の時と×の時があります。 A列が同じ数字であるものを1グループとすると、C列の行ががすべて○のグループだけを抽出したいのです。 A列 B列 C列 123 aa ○ 123 ab ○ 123 zs ○ 325 dd ○ 325 dg × 500 ff ○ (上の場合、A列が123と500の行を抽出したい) どうしたらいいでしょうか? できればプログラムではなくクエリなどの操作でお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
下記のSQLを作れば 123 aa ○ 123 ab ○ 123 zs ○ 500 ff ○ のように表示できます。 クエリのSQLビューにテーブル名とフィールド名を直して記述(コピーでもOK)してください。 SELECT テーブル名.* FROM テーブル名 where テーブル名.A <> (SELECT テーブル名.A FROM テーブル名 WHERE ((テーブル名.C)="×")) ; またはテーブルの選択クエリを作り Aの抽出条件に <>(SELECT テーブル名.A FROM テーブル名 WHERE ((テーブル名.C)="×")) と入力してください。(テーブル名とフィールド名は直してください。)
その他の回答 (3)
>(上の場合、A列が123と500の行を抽出したい) これは、結果として、 123 aa ○ 123 ab ○ 123 zs ○ 500 ff ○ と表示させたいのでしょうか? それとも 123 500 と表示させたいのでしょうか?
お礼
表示したいのは下でもいいのですが上の方です。 解答を何件かいただけたようなので、試してみます。 どうもありがとうございました。
テーブルを元に選択クエリをつくりA列とC列を表示させ集計を行います。 A列はグループ化、C列は最大を選びます。 C列の抽出条件に <>"×” でできると思います。 C列のデータ型ですが、テキスト型で〇×などの形をとるより、yes/no 型のほうが間違える可能性が少ないと思います。 (的外れでしたらごめんなさい。)
お礼
グループ化と最大ですか、面白いですね。 他にも何か使い道がありそうな感じがします。 ご回答どうもありがとうございました。
- doredore1
- ベストアンサー率38% (13/34)
あまりスマートではないかもしれませんが、 "クエリ○" と "クエリ×" を作る。 クエリ○ は、フィールドに番号と○×レコードを表示し集計し ○を抽出 クエリ× は、フィールドに番号と○×レコードを表示し集計し ×を抽出 クエリ○は、番号フィールドに123、325、500 ○×フィールドに ○ を表示(3行)され、 クエリ×は、番号フィールドに325 ○×フィールドに × を表示(1行)されます。 新規クエリを作成。クエリ○ と クエリ×をデザインビュに追加。 クエリ○の番号と クエリ×の番号を結合 結合プロパティをクエリ○の全レコード・・・にする フィールドに クエリ○の番号 と ○× フィールドに クエリ×の番号 と ○× クエリ×の○×フィールドの抽出条件に IS NULLを設定。 これで、クエリ○の番号 123と500を抽出できると思います。 もっと良い方法があるかとは思いますが、この方法でもとりあえず抽出できそうです。 説明がうまくないのでわかりにくいかと思いますが、ごめんなさい。 不明な点は、また質問して下さい。
お礼
ご回答ありがとうございます。 説明ちゃんと分かりましたよ! 実は私も回答していただいたような方法で抽出しようとしていました。ただ、実際はもう少しややこしいデータだったりするので情けないんですが頭の整理がつかなくなってしまったのです。
お礼
御礼が遅くなって申し訳ありません。 ご回答ありがとうございます。 大変参考になりました!