- 締切済み
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
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 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; /
補足
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);