- 締切済み
【初心者です】アクセスの条件設定が分かりません
Accessテーブルの行に日付が4/1~8/14、列フィールドに都道府県が47個並んでいます。 テーブルの中身は、日付毎、都道府県ごとの天気模様が記されています。 北海道 青森 秋田 岩手 山形 宮城 福島 新潟 ・・・・・・・ 4月1日 雨・曇 曇り 晴れ 雨・雷 晴れ 台風 雨・雷 大雨・雷 4月2日 雨・曇 曇り 晴れ 雨・雷 晴れ 台風 雨・雷 大雨・曇り 4月3日 雨・雷 曇り 晴れ 雨・雷 晴れ 台風 雨・雷 雨・雷 4月4日 雨・曇 曇り 晴れ 雨・雷 晴れ 晴れ 雨・雷 大雨・曇り 4月5日 雨・雷 曇り 晴れ 雨・雷 晴れ 晴れ 雨・雷 大雨・曇り 4月6日 雨・曇 曇り 晴・雷 雨・雷 晴れ 晴れ 雨・雷 大雨・雷 ・ ・ ・ このテーブルの中から、”*雷*”というキーワードが書かれているデータを抽出したいです。 フィールドが5個ぐらいならば検索条件欄に”*雷*”というキーワードを1段づらしで書いてできたのですが、47個も縦に検索条件設定できません。 できれば、 4月1日 4月2日 4月3日 ・ ・ ・ 岩手 岩手 北海道 福島 福島 岩手 福島 新潟 といった具合で表示したいと思っているのですが、どなたかやり方を教えて頂けませんでしょうか。 もしかしたら簡単な内容かもしれませんが、何分初心者で困ってます。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nicotinism
- ベストアンサー率70% (1019/1452)
日付 北海道 青森 秋田 岩手 山形 宮城 福島 新潟 4月1日 雨・曇 曇り 晴れ 雨・雷 晴れ 台風 雨・雷 大雨・雷 4月2日 雨・曇 曇り 晴れ 雨・雷 晴れ 台風 雨・雷 大雨・曇り 4月3日 雨・雷 曇り 晴れ 雨・雷 晴れ 台風 雨・雷 雨・雷 4月4日 雨・曇 曇り 晴れ 雨・雷 晴れ 晴れ 雨・雷 大雨・曇り 4月5日 雨・雷 曇り 晴れ 雨・雷 晴れ 晴れ 雨・雷 大雨・曇り 4月6日 雨・曇 曇り 晴・雷 雨・雷 晴れ 晴れ 雨・雷 大雨・雷 これだと非常に扱いにくいExcel的なレイアウトなので 縦に展開した 日付 天気 県名 県番 2013/04/01 雨・曇 北海道 1 2013/04/02 雨・曇 北海道 1 2013/04/03 雨・雷 北海道 1 2013/04/04 雨・曇 北海道 1 2013/04/05 雨・雷 北海道 1 2013/04/06 雨・曇 北海道 1 2013/04/01 曇り 青森 2 2013/04/02 曇り 青森 2 のようにする必要があります。 Excelに出力してカットアンドコピーで整列させて Accessにインポートするか ユニオンクエリ+テーブル作成クエリで作る必要があります。 県番は北から南に並べるために使います。 SELECT Q.* INTO TBL1 FROM (SELECT TBL.日付, TBL.北海道 AS 天気 ,'北海道' AS 県名 ,1 AS 県番 FROM TBL UNION ALL SELECT TBL.日付, TBL.青森 AS 天気 ,'青森' AS 県名 ,2 AS 県番 FROM TBL UNION ALL SELECT TBL.日付, TBL.秋田 AS 天気 ,'秋田' AS 県名 ,3 AS 県番 FROM TBL UNION ALL SELECT TBL.日付, TBL.岩手 AS 天気 ,'岩手' AS 県名 ,4 AS 県番 FROM TBL UNION ALL SELECT TBL.日付, TBL.山形 AS 天気 ,'山形' AS 県名 ,5 AS 県番 FROM TBL UNION ALL SELECT TBL.日付, TBL.宮城 AS 天気 ,'宮城' AS 県名 ,6 AS 県番 FROM TBL UNION ALL SELECT TBL.日付, TBL.福島 AS 天気 ,'福島' AS 県名 ,7 AS 県番 FROM TBL UNION ALL SELECT TBL.日付, TBL.新潟 AS 天気 ,'新潟' AS 県名 ,8 AS 県番 FROM TBL ) AS Q; 沖縄までつなげていってください。 これを『Q_TBL1作成』として保存します。 ダブルクリックすると、TBL1が作成されます(内容は上記の例のとおり) 次に最終目的の形に持ってゆくためにTBL1テーブルからもう一丁 SQL文は、 PARAMETERS [天気は] Text ( 255 ); SELECT 日付, 天気, 県番, 県名, [天気は] & (SELECT COUNT(*) FROM TBL1 AS Q WHERE TBL1.天気 = Q.天気 and TBL1.日付 = Q.日付 and TBL1.県番 >= Q.県番) AS 天気2 INTO TBL2 FROM TBL1 WHERE ((TBL1.天気) Like '*' & [天気は] & '*') ORDER BY 日付, 天気, 県番; これを『Q_TBL2作成』として保存します。 ダブルクリックで開くと、天気を聞いてきますので、雷 とでも入れてみてください。 これでTBL2が作成されます。 最後に、ようやくクロス集計の出番 SQL文は TRANSFORM First(TBL2.県名) AS 県名の先頭 SELECT TBL2.天気2 FROM TBL2 GROUP BY TBL2.天気2 PIVOT Format([日付],"mm/dd"); で添付画像のようになります。 作業用のテーブルを作っていますので、いまいちな出来です。 雷1~4は気にしないでください (^_^;
- bin-chan
- ベストアンサー率33% (1403/4213)
その「5個条件書いたクエリ」を元に作りましょう。 クエリをデザインビューで開きさらに右クリックでSQLビューで開く。 何か、別のテキストエディタヘコピペして下さい。 WHERE以降が抽出条件。余分なカッコは整理して、47都道府県の行を作って下さい。 面倒ならEXCELで文字連結で作るも良し。 できあがったSQL文をコピペでクエリに貼付たら右クリックして デザインビューに戻して下さい。 できあがったクエリを元にクロス集計ですね。 余談だが都道府県名の頭にコード(01~47)を加えておくと並びが見やすくなりますよ。
補足
bin-chanさん 回答ありがとうございます。 bin-chanさん回答内容について質問させてください。 >できあがったSQL文をコピペでクエリに貼付たら右クリックして >デザインビューに戻して下さい。 ここまではできました。 ありがとうございます。 >できあがったクエリを元にクロス集計ですね。 このやり方が分かりません。 列見出し、行見出し、カウント方法、どう設定したらいいのか分かりません。 お手数ですが教えて頂けませんでしょうか。