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

[CHIKU]に地区データ。[DATE1][DATE2][DATE3]にそれぞれ日付が入っています。[CHIKU]とこの3項目のデータを元にグループ化して集計を出したいのです。
[DATE1]に日付が入っているレコードをカウントしてそれを、”雑誌”という見出しをつけて表示。[DATE2]はネット、[DATE3]はメールと見出しを付けます。

もとのデータ
----------------------------
CHIKU、DATE1、DATE2、DATE3
----------------------------
大阪、2005/09/10、空、空
東京、2005/09/12、空、空
名古屋、空、2005/10/01、空
東京、空、2005/10/10、空
大阪、2005/11/05、空、空
----------------------------

出したい集計表
-------------------------
地区、BAITAI、出席者数
-------------------------
大阪、雑誌、2
東京、雑誌、1
東京、ネット、1
名古屋、ネット、1
-------------------------

A 回答 (1件)

テーブル設計に疑問が残りますが…



SELECT CHIKU, '雑誌', COUNT(*)
FROM table
WHERE DATE1 IS NOT NULL
GROUP BY CHIKU
UNION
SELECT CHIKU, 'ネット', COUNT(*)
FROM table
WHERE DATE2 IS NOT NULL
GROUP BY CHIKU
UNION
SELECT CHIKU, 'メール', COUNT(*)
FROM table
WHERE DATE3 IS NOT NULL
GROUP BY CHIKU

で、いいのでは。
    • good
    • 0
この回答へのお礼

質問が長すぎて途中できれてしまったので、返事は期待していなかったんですが、わかりにくい内容だったにもかかわらず、ご返答ありがとうございます!
しかもバッチリいけました!
自力で考えていたのは、1つのselect分の中でcaseを使用して各日付から架空項目[BAITAI]にデータをセットし、group byでもcaseを使用するというものでした。これでもいけそうなんですが、かなりわかりにくい構造になってきていて、今回教えていただいたunionを使った方法の法が見た目もすっきりしてわかりやすいですね。
本当にありがとうございました!

お礼日時:2005/11/25 10:57

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

関連するカテゴリからQ&Aを探す