プロが教える店舗&オフィスのセキュリティ対策術

初歩的な質問で、既に質問されている内容でしたらすいません。

不動産のデータベースでひとつのテーブル内に、最寄り沿線が3つ記録されています。
3列のデータをまとめてグループ化し、沿線名ごとのカウントを取るにはどうすれば良いでしょうか?テーブルの詳細は、添付画像をご確認ください。
1列ごとのやり方はわかるのですが、3列まとめてカウントする方がわかりません。

どなたか教えて頂けませんでしょうか。

「複数行のグループ集計とカウント」の質問画像

A 回答 (1件)

特定物件に対して同じ沿線がかぶっているように見受けられますが


そういう仕様でよいのですよね?
であればこんな風ですかねぇ

create table ensen (id int not null primary key,ensen1 int null,ensen2 int null,ensen3 int null);
insert into ensen values(1,1,1,2),(2,1,2,2),(3,1,1,2),(4,3,4,5),(5,4,null,null),(6,5,6,null);
select ensen_all ,count(*) from
(select ensen1 as ensen_all from ensen
where ensen1 is not null
union all select ensen2 from ensen
where ensen2 is not null
union all select ensen3 from ensen
where ensen3 is not null
) as sub
group by ensen_all

ただ、実際にはensen1~ensen3を別フィールドで管理しないで正規化処理をしておけば
もっとデータ構造は簡単になります

この回答への補足

早速実装したところ、こちらの思った通り実装出来ました。本当にありがとうございましいた。

補足日時:2012/05/26 10:34
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
この後、実装してみます。

大手不動産登録システムからのCSV書き出し+そのままインポートまでがパッケージになっているので、こちら側は読み取りしかできな状態だったのです。

初歩的な質問にお答え頂き本当にありがとうございました。

お礼日時:2012/05/26 02:31

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