gpt4 book ai didi

tsql - 需要一些 tSQL 巫术 : SQL Update Based on Running Total

转载 作者:行者123 更新时间:2023-12-04 17:28:29 24 4
gpt4 key购买 nike

我有一个实现,它使用了一个非常难以遵循/维护的 super 毛茸茸的递归 CTE。我希望 SO 上的一位大脑能够想出一些更直接的 tSQL 方法代码来完成以下任务:

表格文档

DocID    SortOrder    PageCount    StartPgNum   EndPgNum
5 1 2 {1} {2}
8 2 7 {3} {9}
22 3 3 {10} {12}

对于上面给出的表,我需要一个查询来填充 StartPgNum 和 EndPgNum(示例值包含在 {} 中的示例中,以使我需要的意图更清晰。

假设:
* DocID、SortOrder 和 PageCount 已预先填充。
* StartPgNum 和 EndgNum 需要由 tSQL 代码填充。
* SortOrder 总是从 1 开始,并且是连续的,没有间隙。
* 文档应该按照 SortOrder 的顺序获得一个连续的页码方案

最佳答案

更新为更好:)

DECLARE @temp TABLE (DocID INT, SortOrder INT, PageCount INT)

INSERT INTO @temp VALUES (5, 1, 2)
INSERT INTO @temp VALUES (8, 2, 7)
INSERT INTO @temp VALUES (22, 3, 3)

SELECT
*,
StartPgNum + PageCount-1 AS EndPgNum
FROM
(SELECT
DocID,
SortOrder,
PageCount,
ISNULL((SELECT SUM(PageCount)+1 FROM @temp WHERE SortOrder < parent.SortOrder), 1) AS StartPgNum
FROM
@temp parent) _temp

关于tsql - 需要一些 tSQL 巫术 : SQL Update Based on Running Total,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com