質問: 複数行のグループ集計とカウント 初歩的な質問で、既に質問されている内容でしたらすいません。 不動産のデータベースでひとつのテーブル内に、最寄り沿線が3つ記録されています。 3列のデータをまとめてグループ化し、沿線名ごとのカウントを取るにはどうすれば良いでしょうか?テーブルの詳細は、添付画像をご確認ください。 1列ごとのやり方はわかるのですが、3列まとめてカウントする方がわかりません。 どなたか教えて頂けませんでしょうか。
回答: 特定物件に対して同じ沿線がかぶっているように見受けられますが そういう仕様でよいのですよね? であればこんな風ですかねぇ 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を別フィールドで管理しないで正規化処理をしておけば もっとデータ構造は簡単になります