1

私はSQLにかなり慣れていないので、これが初心者のクエリである場合はすみません.

http://i247.photobucket.com/albums/gg149/izzner/Clipboard01-1.jpg

上の図からわかるように、Sql DB テーブルにいくつかのデータがあり、指定したシリアル番号から 4 行ごとに削除する必要があります。次に、行の順序を変更せずに Serial_no 列の番号を付け直す必要があります。

可能であれば、これらすべてを単一のクエリで実行する必要がありますが、過去2日間苦労しています

皆さんが私を助けてくれることを願っています。前もって感謝します

//USING THIS CODE TO DELETE every 4th row// 
    DELETE 
            FROM Tbl2
            FROM 
            Tbl2 AS A 
            INNER JOIN
            (
              SELECT ROW_NUMBER() OVER(ORDER BY GETDATE()) AS CNT , *
              FROM Tbl2
            ) AS B ON A.Serial_no = B.Serial_no
            WHERE CNT%4 = 0 AND CNT >= 10

ただし、再番号付けクエリ (以下)

DECLARE @FIRSTID INT = 1000000010

UPDATE tbl2
SET Serial_no = @FIRSTID + ROW_NUMBER() OVER(ORDER BY Serial_no) - 1
FROM tbl2

「メッセージ 4108、レベル 15、状態 1、行 8 ウィンドウ関数は、SELECT または ORDER BY 句でのみ使用できます」というエラーをスローします。

4

2 に答える 2