こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

SQLでNoを編集

次のように、コードAとコードBの並び順にNoをSQLで更新するにはどうすれば良いでしょうか?
NoはコードAが変わると1から振りなおしです。

コードA コードB No
A1   B1  
A1   B2  
A1   B3  
A2   B1  
A2   B2  
A2   B3  



コードA コードB No
A1   B1   1
A1   B2   2
A1   B3   3
A2   B1   1
A2   B2   2
A2   B3   3

投稿日時 - 2006-10-23 09:14:19

QNo.2491328

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

PL/SQLで対応する例です。

declare
 cold varchar(5) := ' ';
 nno integer;
 cursor c1 is
  select コードA,コードB,rowid from tbl
  order by コードA,コードB;
begin
 for c1_rec in c1 loop
  if cold != c1_rec.コードA then
   nno := 1;
  else
   nno := nno + 1;
  end if;
  update tbl
  set No = nno
  where rowid = c1_rec.rowid;
  cold := c1_rec.コードA;
 end loop;
end;
/

投稿日時 - 2006-10-23 13:32:30

補足

UPDATE テーブル A
SET NO = (SELECT RN FROM
(SELECT コードA, コードB
,ROW_NUMBER() OVER (PARTITION BY コードA ORDER BY コードA, コードB) RN
FROM テーブル ) B
WHERE A.コードA = B.コードA
AND A.コードB = B.コードB);

投稿日時 - 2006-10-23 13:58:21

あなたにオススメの質問