• 締切済み

アクセスにおける行の抽出

お世話になります。 アクセスにて行を抽出したいのですが、どのようにしたらよいのか悩んでます。 教えていただけますでしょうか? 以下のようなデータがあります。 場所    色 ----------------- 東京    赤 東京    青 秋田    白 秋田    緑 秋田    青 大阪    青 大阪    白 福岡    青 色の優先順位 1.赤 2.青 3.白 4.緑 で、 東京の場合、「東京 赤」 秋田の場合、「秋田 青」 大阪の場合、「大阪 青」 福岡の場合、「福岡 青」(福岡は1行なので、ダイレクトに行を抽出する。) という具合に行を抽出したいのですが、 この場合、クエリにて条件を設定すると思いますが、どのようにしたらよいでしょうか? たぶんiif関数を使うのかなと思いますが・・・・・・ またこの元データはエクセルで、2つのエクセルデータを統合して新たな表を作るイメージです。 もちろんエクセルで作成できてもいいのですが、データを操るにはアクセスと思っておりますので、なんとかアクセスできないか思案しております。 よろしくお願いします。

みんなの回答

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.3

基本的な考え方は#1の方と同じです。 ただ私の環境だと#1のSQLでちゃんと抽出できなかったので、一応私の環境で成功したSQL文を。 SELECT 場所, 色 FROM [select a.場所,min( b.順番 ) as 抽出色 from ( select a.場所, a.色, b.順番 from 都道府県 a left join 色マスタ b on a.色 = b.色 ) group by a.場所 ]. AS c INNER JOIN 色マスタ ON c.抽出色 = 色マスタ.順番;

  • taranko
  • ベストアンサー率21% (516/2403)
回答No.2

各場所の優先順位の高い色1色のみの場所と色を 表示させたいということでよろしいのでしょうか? 色の優先順位1.赤 2.青 3.白 4.緑ですが、 実際に色名で並べ替えると「青赤白緑」の順に なってしまいます。 テーブル1つとクエリー2つ使用して作成してみました (1)次のテーブルを作成する 色 色番号 赤 1 青 2 白 3 緑 4 (2)クエリーで(1)で作成したテーブルと現在ある テーブルを色でつなぎ合わせる ※つなぎ方は現在あるテーブル全レコードと(1)の 同じ結合フィールドのレコードだけを含める 場所・色番号・色の順に表示して並べ替えで 場所順・色番号順にして保存する (3)新しいクエリーで(2)で作成したクエリーを元として 場所・色の順に表示し、集計を行う。 ※場所をグループ化し色は先頭にする 場所の並び順は違いますが、上と同じ結果は 出すことができました。 バージョンが低いからかもしれませんが、クエリー ひとつではどうも上の結果が得られなかったもので こうなってしまいました。

  • masa1214
  • ベストアンサー率32% (46/141)
回答No.1

場所のテーブル名を仮に[都道府県]とします。 以下のような色マスタを作っておき、結合させるとよいかと思います。 [色マスタ] 色  優先順位 ----------------- 赤  1 青  2 白  3 緑  4 SELECT * FROM 都道府県 A, (SELECT B.場所, B.色, C.MIN(優先順位)  FROM 都道府県 B, 色マスタ C  WHERE B.色=C.色  GROUP BY B.場所, B.色) D WHERE A.場所=D.場所 AND A.色=D.色;

関連するQ&A