2017-07-07 10 views
0

こんにちは私はこのテーブルを持っています。私はこのテーブルを変換する必要があるユニークなテーブルを更新するSQL

ADDR  | STATE | ID 
CRA.20 15 | REP | (null) 
CRA.20 15 | REP | (null) 
CRA.20 15 | REP | (null) 
CRA.20 15 | PRI | RR_88_JK 

..

ADDR  | STATE | ID 
CRA.20 15 | REP | RR_88_JK 
CRA.20 15 | REP | RR_88_JK 
CRA.20 15 | REP | RR_88_JK 
CRA.20 15 | PRI | RR_88_JK 

私はこのQRYを持っていますが、機能しません。あなたは一つのアイデアを持っていますか?

UPDATE TABLE_A A 
    SET a.ID = b.ID 
WHERE EXISTS 
      (SELECT b.ID 
       FROM TABLE_A B 
      WHERE a.ADDR = B.ADDR AND b.STATE = 'PRI') 
and A.STATE = 'REP'; 

ありがとうございます。

UPDATE TABLE_A A 
    SET a.ID = (SELECT b.ID 
       FROM TABLE_A B 
       WHERE a.ADDR = B.ADDR AND b.STATE = 'PRI' AND rownum = 1 
      ) 
    WHERE EXISTS (SELECT b.ID 
       FROM TABLE_A B 
       WHERE a.ADDR = B.ADDR AND b.STATE = 'PRI' 
       ) AND 
     A.STATE = 'REP'; 

Bしかない外側のクエリでは、サブクエリで知られている:

答えて

1

あなたが値を設定するサブクエリを必要としています。

+0

こんにちは私はこのqryを使用しますが、機能はありません。 ORA-01427:単一行サブクエリは複数の行を戻します。私はこのqryを理解していますが、このエラーを満たしていません。 @サントアゴエスピーシア。 –

+0

。 。明らかに、複数の 'pri '行を持つ' addr'値があります。 'とrownum = 1'は任意にそれらの1つを選択します。 –

1

以下は、あなたがやりたいことになります。

UPDATE TABLE_A A 
    SET a.ID = (SELECT MIN(ID) 
       FROM TABLE_A 
       WHERE ID IS NOT NULL AND 
         STATE = 'PRI') 
    WHERE ID IS NULL AND 
     STATE = 'REP' 

運のベストを。

関連する問題