住所が1フィールドに入っているデータから、
都道府県名別にデータを集計して欲しいなんて依頼をもらいました。

そこで、
都道府県マスタを作ってこれをくっつけて集計すれば行けるのでは?
と、思ったのですが。。。

SQLの結合するときにLike使えるのかな?

と、やったことなかったので思ったのですが、
意外と簡単に出来ました。
顧客テーブル(CSTMER)の住所(ADDRESS)と、
都道府県マスタ(PREFECTURE)の県名(NAME)を結合して
住所に対して県名を全ぽ一致でくっつける。


■PREFECTUREテーブル

NAME
北海道
青森県
秋田県

■CSTMERテーブル

NO NAME ADDRESS
1 ○○ 太郎 北海道札幌市…
2 △△ 花子 青森県八戸市…
3 ✕✕ 二郎 北海道札幌市…

■実行したSQL

select pr.NAME, count(*) as CNT
from CSTMER cs
inner join PREFECTURE pr
on cs.ADDRESS like pr.NAME || ‘%’
where cs.IS_DELETED = 0
group by pr.NAME

上記SQLでそれが出来ました。

今回利用した環境はOracle 11gです。