0

Update ステートメントに変換する必要がある select ステートメントがあります。

SELECT GUID,seq original_seq_no, ROW_NUMBER()
OVER ( PARTITION BY GUID ORDER BY seq) AS new_seq_no
FROM CHK_SEQ;

上記のクエリが実際に行うことは、一意の GUID を持つ複数のレコードがあり、テーブル CHK_SEQ の列 SEQ の値が 6、9、10 であるとします。次に、上記のクエリを実行すると、SEQ の値が new_seq_no である 1,2,3 に変更されます。

誰でもこれで私を助けてください。

ありがとう。

4

3 に答える 3

1

これを試してください(Sql-Server 2005以降):

With cte as (
  Select GUID,seq, row_number() over ( partition by GUID order by seq) AS new_seq_no
  From CHK_SEQ
)
Update c
Set c.seq = new_seq_no
From CHK_SEQ c 
     Join cte on c.Guid = cte.Guid and c.seq = cte.seq;
于 2013-09-24T09:18:46.867 に答える
0
merge into CHK_SEQ 
using
    SELECT rowid as rid, 
           ROW_NUMBER() OVER (PARTITION BY GUID ORDER BY seq) AS new_seq_no
    FROM CHK_SEQ
) t on (chk_seq.rowid = t.rid)
when matched then update
   set seq = new_seq_no;
于 2013-09-24T09:52:56.737 に答える
0

これを試して、

with cte 
AS
(
SELECT GUID,seq original_seq_no, ROW_NUMBER()
OVER ( PARTITION BY GUID ORDER BY seq) AS new_seq_no
FROM CHK_SEQ
)

update  CHK_SEQ
set     CHK_SEQ.seq = r.new_seq_no
from    cte r
where CHK_SEQ.seq = r.original_seq_no AND CHK_SEQ.GUID= r.GUID;
于 2013-09-24T09:21:19.480 に答える