• 締切済み

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

みんなの回答

  • kazu1213
  • ベストアンサー率60% (3/5)
回答No.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; /

m1234
質問者

補足

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);

関連するQ&A