sqlserver 一个表大概是这样的结构,‘累计’字段现在没有值的,要根据部门、日期,更新‘累计’字段。‘累计=剩余+昨天累计’,1号的昨天累计为null可以用0代替。
update语句应该怎么写。
sqlserver 一个表大概是这样的结构,‘累计’字段现在没有值的,要根据部门、日期,更新‘累计’字段。‘累计=剩余+昨天累计’,1号的昨天累计为null可以用0代替。
update语句应该怎么写。
根据您的描述,您需要使用 SQL Server 中的窗口函数来实现在字段分组排序后更新‘累计’字段的操作。具体的 SQL 语句如下:
UPDATE tableA SET tableA.累计 = tableA.剩余 + ISNULL(LAG(tableA.累计, 1, 0) OVER (PARTITION BY tableA.部门 ORDER BY tableA.日期), 0) WHERE tableA.累计 IS NULL
其中,LAG() 是一个窗口函数,用于获取上一条数据的‘累计’字段的值。ISNULL() 函数用于将第一个参数替换为第二个参数,如果第一个参数为 NULL 的话。PARTITION BY 用于指定字段分组,ORDER BY 用于指定分组排序的方式(按照日期升序排序)。
希望我的回答对您有所帮助。