プロが教えるわが家の防犯対策術!

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日 ・ ・ ・
岩手  岩手   北海道
福島  福島   岩手
           福島
           新潟

といった具合で表示したいと思っているのですが、どなたかやり方を教えて頂けませんでしょうか。
もしかしたら簡単な内容かもしれませんが、何分初心者で困ってます。
よろしくお願いいたします。

A 回答 (2件)

日付 北海道 青森 秋田 岩手 山形 宮城  福島 新潟


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は気にしないでください (^_^;
「【初心者です】アクセスの条件設定が分かり」の回答画像2
    • good
    • 0

その「5個条件書いたクエリ」を元に作りましょう。


クエリをデザインビューで開きさらに右クリックでSQLビューで開く。
何か、別のテキストエディタヘコピペして下さい。
WHERE以降が抽出条件。余分なカッコは整理して、47都道府県の行を作って下さい。
面倒ならEXCELで文字連結で作るも良し。
できあがったSQL文をコピペでクエリに貼付たら右クリックして
デザインビューに戻して下さい。
できあがったクエリを元にクロス集計ですね。
余談だが都道府県名の頭にコード(01~47)を加えておくと並びが見やすくなりますよ。

この回答への補足

bin-chanさん

回答ありがとうございます。

bin-chanさん回答内容について質問させてください。

>できあがったSQL文をコピペでクエリに貼付たら右クリックして
>デザインビューに戻して下さい。

ここまではできました。
ありがとうございます。

>できあがったクエリを元にクロス集計ですね。

このやり方が分かりません。

列見出し、行見出し、カウント方法、どう設定したらいいのか分かりません。

お手数ですが教えて頂けませんでしょうか。

補足日時:2013/08/14 18:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!