下記のような商品データがあります。
商品コード,シリーズコード,商品名
1001,1000,ブラビア20
1002,1000,ブラビア25
1003,1000,ブラビア30
1004,1000,BIGブラビア50
同じシリーズで異なる商品コード、商品名をもつデータです。
欲しい結果としては、
シリーズコード,シリーズ名
1000,ブラビア
商品名に共通に現れる「ブラビア」を抜き出す方法を教えてください。
ストアドプロシジャーでも使えば出来なくは無いかもしれないが、
通常の SQL 文の範囲では無理。
また、仮に行うとしてもDBではなくアプリケーション側で行うべき処理です。
通常この場合、「シリーズコード,シリーズ名」の対応情報を持ったテーブルを別途作成します。
select * from テーブル名
where
シリーズコード = '1000' and
商品名 like '%ブラビア%
部分一致検索をする場合 like を使います。
SELECT DISTINCT シリーズコード, 商品名 FROM テーブル名;
とすれば、シリーズコード毎に、重複する商品名を除いた形で出力できますが、商品名の共通部分だけを抜き出すのは難しいですね。
手動で作業をするなら、上記の結果を手動で編集するとか。
自動で作業するなら、上記の結果をさらに、
同一シリーズコードを持つ場合、中に含まれる共通の文字列を検索するプログラムを作る必要があると思います。
SELECT シリーズコード,
CASE WHEN 商品名 LIKE '%ブラビア%' THEN 'ブラビア'
WHEN 商品名 LIKE '%アクオス%' THEN 'アクオス'
ELSE '不明'
END AS シリーズ名
FROM テーブル名
9i以上ならばCASE文を使用してみたらどうでしょうか?
コメント(0件)