2016-04-03 10 views
0

Ben bu sorguyuSQL Server ekleme ifadesinde sipariş sayımı nasıl belirlenir?

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 

Düzgün çalışır sahip başka bir veritabanına

için veritabanından veri kopyalamaya çalıştı. Soru şu ki: bu sözdizimini kullanırsam bir sütun DisplayOrder varsa, satırlara 1 ekleyeceğim, ama gerçekten ihtiyacım olan şey, 1,2,3,4 saymaktır, vs.

(CategoryID + 16)(CategoryID + 16) tekrar

DisplayOrder artan bir değer doldurmak için kullanın row_number() over (partition by CategoryId order by (select null))

+0

neden kimlik özelliğini kullanın olamaz – TheGameiswar

cevap

4

Lütfen yardım olarak 1 'den sayımı başlatmak değişti. (Not: + 16partition by gereksiz olduğunu.)

Ayrıca yerine bu yapının:

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

kullanın basit, daha standart bir sözdizimi:

coalesce(CreateDate, GETDATE()) 
+0

Teşekkürler alot @Gordon Ben ROW_NUMBER() OVER (PARTİ TARAFINDAN (CategoryID + 16) emriyle (null) seçin) '' ve harika çalışıyor lütfen cevabın cevabını düzeltmek için doğru cevabı –

+0

olarak işaretleyiniz belki 'ROW_NUMBER kullanabilirsiniz)% 16 ' – Mahmoud