我有以下内容
我有一个循环在 pageheader 中创建标头记录,然后单独的插入从 items 表中获取接下来的 25 条记录并插入到 pagecontent 表中。
循环的下一次迭代必须重置 pagecontent 表中的 itemnumber 的编号。
这基本上都是有效的,我无法开始工作的是要重置的编号。
这是我要创建的页面内容的数据。
行ID | 标头 ID | 商品编号 | 商品代码 |
---|---|---|---|
1 | 1 | 1 | 00010 |
2 | 1 | 2 | 01002 |
2 | 1 | 3 | 01612 |
... | ... | ... | ... |
2 | 1 | 25 | 01701 |
2 | 2 | 1 | 00427 |
简化的插入
( RowID
, HeaderID
, ItemID
, ItemCode
)
SELECT
ROW_NUMBER() OVER(ORDER BY RowID) + (SELECT ISNULL(MAX(RowID), 0) FROM pagecontent)
,@headerid
,ROW_NUMBER() OVER(ORDER BY RECORDID)
,ITEMCODE
FROM ITEMS
ORDER BY ITEMCODE
OFFSET @start ROWS
FETCH NEXT 25 ROWS ONLY;
因为 ROW_NUMBER 是在 FETCH NEXT 工作之前对 ITEMS 中的所有行进行编号。当我希望 ItemID 为 1(因为新页面已开始)时,我得到了 RowID 26、ItemID 26。
有没有办法重置编号,或者之后运行更新来重新编号?
我目前已采取运行更新来纠正。
我刚刚意识到在写这篇文章时我可以使用一个 CASE,如果偏移量大于零,则从数字中减去偏移量。
谢谢。