- 締切済み
アクセスにおける行の抽出
お世話になります。 アクセスにて行を抽出したいのですが、どのようにしたらよいのか悩んでます。 教えていただけますでしょうか? 以下のようなデータがあります。 場所 色 ----------------- 東京 赤 東京 青 秋田 白 秋田 緑 秋田 青 大阪 青 大阪 白 福岡 青 色の優先順位 1.赤 2.青 3.白 4.緑 で、 東京の場合、「東京 赤」 秋田の場合、「秋田 青」 大阪の場合、「大阪 青」 福岡の場合、「福岡 青」(福岡は1行なので、ダイレクトに行を抽出する。) という具合に行を抽出したいのですが、 この場合、クエリにて条件を設定すると思いますが、どのようにしたらよいでしょうか? たぶんiif関数を使うのかなと思いますが・・・・・・ またこの元データはエクセルで、2つのエクセルデータを統合して新たな表を作るイメージです。 もちろんエクセルで作成できてもいいのですが、データを操るにはアクセスと思っておりますので、なんとかアクセスできないか思案しております。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- asahina02
- ベストアンサー率47% (95/202)
基本的な考え方は#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)
各場所の優先順位の高い色1色のみの場所と色を 表示させたいということでよろしいのでしょうか? 色の優先順位1.赤 2.青 3.白 4.緑ですが、 実際に色名で並べ替えると「青赤白緑」の順に なってしまいます。 テーブル1つとクエリー2つ使用して作成してみました (1)次のテーブルを作成する 色 色番号 赤 1 青 2 白 3 緑 4 (2)クエリーで(1)で作成したテーブルと現在ある テーブルを色でつなぎ合わせる ※つなぎ方は現在あるテーブル全レコードと(1)の 同じ結合フィールドのレコードだけを含める 場所・色番号・色の順に表示して並べ替えで 場所順・色番号順にして保存する (3)新しいクエリーで(2)で作成したクエリーを元として 場所・色の順に表示し、集計を行う。 ※場所をグループ化し色は先頭にする 場所の並び順は違いますが、上と同じ結果は 出すことができました。 バージョンが低いからかもしれませんが、クエリー ひとつではどうも上の結果が得られなかったもので こうなってしまいました。
- masa1214
- ベストアンサー率32% (46/141)
場所のテーブル名を仮に[都道府県]とします。 以下のような色マスタを作っておき、結合させるとよいかと思います。 [色マスタ] 色 優先順位 ----------------- 赤 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.色;