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

お世話になります。
下記、置換前のSELECT結果を
置換後のようにしたいですが、
方法が考え付きません。
できればSQL(ストアド)のみで実行したいのですが
スキル不足です。
お手数ですが、ご教授頂きたく宜しくお願い致します。

条件は、B_NOの”N002"が同一のバッチでハイフン以降が
枝番で、その数は、固定では、なくNです。
"N002"のグループ内に"N"が存在したら"P"に置換したいです。

OS:WIN 2003SERVER
DB:SQL SERVER2000 SP4


置換前
REC_NO,B_NO,TYPE
R001,N001-1,P
R002,N001-2,P
R003,N002-1,N
R004,N002-2,N
R005,N002-3,P
R006,N003-1,N
R007,N003-2,P
R008,N004-1,N
R009,N004-1,N

置換後
REC_NO,B_NO,TYPE
R001,N001-1,P
R002,N001-2,P
R003,N002-1,P
R004,N002-2,P
R005,N002-3,P
R006,N003-1,P
R007,N003-2,P
R008,N004-1,N
R009,N004-1,N

A 回答 (2件)

>"N002"のグループ内に"N"が存在したら"P"に置換したいです。


を「B_NOのグループ内に'P'が存在したら'P'に置換」と解釈しました。

SELECT REC_NO, B_NO
, CASE WHEN 'P' IN (SELECT [TYPE] FROM Table1 x WHERE SUBSTRING(x.B_NO, 1, 4) = SUBSTRING(a.B_NO, 1, 4) GROUP BY [TYPE],SUBSTRING(B_NO, 1, 4)) THEN 'P' ELSE [TYPE] END [TYPE]
FROM Table1 a
    • good
    • 0
この回答へのお礼

enemyさん

お返事おくれて申し訳けありません。
希望通りの結果がえられました。
ありがとうございました。

お礼日時:2013/05/14 17:05

select REC_NO, B_NO,


case when substr( B_NO, 1, 4 ) = 'N002' then 'P' else foovar.TYPE end as TYPE
from foovar
じゃだめですか?

この回答への補足

bin-chanさん、
早速、ご回答頂いたのに
お返事おそくなり失礼いたしました。

「条件は、B_NOの”N002"が同一のバッチでハイフン以降が
枝番で、その数は、固定では、なくNです。
"N002"のグループ内に"N"が存在したら"P"に置換したいです・・・」

の”N002”は、は、[B_NO]の「一つの例」でsubstring([B_NO],1,3)でグループ化した場合
に[TYPE]列にNがあったらPに置換したいといいたかったのです
言葉足らずで誠に申し訳けありません。

補足日時:2013/04/30 14:37
    • good
    • 0
この回答へのお礼

解決しました。
アドバイスありがとうございました。

お礼日時:2013/05/14 17:06

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

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