2016-04-03 22 views
0

は、私はこのクエリSQL Serverの挿入ステートメントで注文数を設定するにはどうすればよいですか?

insert into d1.dbo.Category(Id, Name, CategoryTemplateId, 
          ParentCategoryId, PictureId, PageSize, 
          AllowCustomersToSelectPageSize, 
          ShowOnHomePage, IncludeInTopMenu, 
          SubjectToAcl, LimitedToStores, Published, 
          Deleted, DisplayOrder, 
          CreatedOnUtc, UpdatedOnUtc) 
    select 
     (ItemID + 25), ItemName, 1, 
     (CategoryID + 16), '', 6, 
     1, 1, 1, 0, 0, 1, 0, 1, 
     iif(CreateDate is null, GETDATE(), CreateDate), 
     iif(LastModifyDate is null, GETDATE(), LastModifyDate) 
    from 
     d2.dbo.Item 

それは正常に動作していて別のデータベース

にデータベースからデータをコピーしようとしました。問題は次のとおりです。DisplayOrderの場合、この構文を使用すると1行が挿入されますが、本当に必要なのは1,2,3,4などです。

(CategoryID + 16)に依存します(CategoryID + 16)DisplayOrderで増加する値を移入する

+0

を – TheGameiswar

答えて

4

使用row_number() over (partition by CategoryId order by (select null))を助けてください、それが再び1からカウントが開始

を変更しました。 (注意:+ 16partition byで冗長である。)

をまた、代わりにこの構築物の:

iif(CreateDate is null,GETDATE(),CreateDate) 

を単純、より標準的な構文を使用してください:あなたが身元プロパティを使用傾ける理由

coalesce(CreateDate, GETDATE()) 
+0

ありがとうございました@Gordon私は 'ROW_NUMBER()OVER(PARTITION BY(CategoryID + 16)order by(select null))'を試してみてください。そして正しい答えとして編集してください。 –

+0

'ROW_NUMBER )%16' – Mahmoud

関連する問題