我尝试将数据从数据库复制到另一个数据库
我有这个查询
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)
更改它再次从1开始计数
请帮忙
答案 0 :(得分:4)
使用row_number() over (partition by CategoryId order by (select null))
填充DisplayOrder
中的增加值。 (注意:+ 16
中的partition by
是多余的。)
此外,而不是这个结构:
iif(CreateDate is null,GETDATE(),CreateDate)
使用更简单,更标准的语法:
coalesce(CreateDate, GETDATE())