1
CREATE TABLE [dbo].[Customer](
    [CusNo] [nvarchar](20) NULL,
    [CusName] [nvarchar](100) NULL,
    [DateIn] [nvarchar](12) NULL,
    [Add1] [nvarchar](255) NULL,
    [TelNoH] [nvarchar](50) NULL,
    [TelNoHP] [nvarchar](11) NULL,
    [DisSR] [nvarchar](50) NULL,
    [DisSL] [nvarchar](50) NULL,
    [DisCR] [nvarchar](50) NULL,
    [DisCL] [nvarchar](50) NULL,
    [DisAR] [nvarchar](50) NULL,
    [DisAL] [nvarchar](50) NULL,
    [ReadSR] [nvarchar](50) NULL,
    [ReadSL] [nvarchar](50) NULL,
    [ReadCR] [nvarchar](50) NULL,
    [ReadCL] [nvarchar](50) NULL,
    [ReadAR] [nvarchar](50) NULL,
    [ReadAL] [nvarchar](50) NULL,
    [PD] [nvarchar](50) NULL,
    [R] [nvarchar](50) NULL,
    [L] [nvarchar](50) NULL,
    [Remarks] [nvarchar](255) NULL,
    [ConSR] [nvarchar](50) NULL,
    [ConSL] [nvarchar](50) NULL,
    [ConCR] [nvarchar](50) NULL,
    [ConCL] [nvarchar](50) NULL,
    [ConAR] [nvarchar](50) NULL,
    [ConAL] [nvarchar](50) NULL,
    [Lens] [nvarchar](50) NULL,
    [Frame] [nvarchar](50) NULL,
    [Amount] [nvarchar](50) NULL,
    [LastUserUpdate] [nvarchar](15) NULL,
    [LastUpdateDate] [nvarchar](max) NULL
) ON [PRIMARY]

Microsoft SQL Server 2008 を使用してCustomerおり、CustNo列が主キーであるテーブルがあります。手動で入力した約 30,000 行ありCustNoます。すべてを更新して、CustNo1 から開始し、記録が終了するまで 1 ずつ連続的に増やしたいと考えています。

使用する必要がある SQL クエリは何ですか?

4

2 に答える 2

2

CTEROW_NUMBERで使用できます:

WITH CTE AS
(
   SELECT CusNo, RN = ROW_NUMBER() OVER (ORDER BY CusNo)
   FROM dbo.Customer
)
UPDATE CTE SET CusNo = RN

簡略化されたモデルを使用したデモ

しかし、正しいデータ型を使用するために @marc_c のアドバイスに従うことも強くお勧めします。

于 2013-02-28T09:09:12.527 に答える
0

はい、マークスのアドバイスに従ってください。もう 1 つ、列 cusno が Identity 列であることを確認して、再配置のプロセス全体を実行する必要がないようにします。

于 2013-02-28T15:43:58.057 に答える