首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游标以某种方式更新值

游标以某种方式更新值
EN

Stack Overflow用户
提问于 2014-02-19 19:41:36
回答 1查看 25关注 0票数 0

在Server 2008 R2中,我有一个如下表:

代码语言:javascript
运行
复制
ID  Dates      Count
1   03-02-2014  2
2   04-02-2014  1
3   05-02-2014  NULL
4   06-02-2014  1
5   07-02-2014  3
6   08-02-2014  NULL
7   09-02-2014  2
8   10-02-2014  NULL
9   11-02-2014  1
10  12-02-2014  3
11  13-02-2014  NULL
12  14-02-2014  1

我有一个INT变量,它有一些值,例如@XCount = 15。

我的要求是用(@XCount )更新count列,例如上一条记录的结果将被下一条记录中的Count值减去。

结果:

代码语言:javascript
运行
复制
ID  Dates        Count  
1   03-02-2014  13  (15-2)
2   04-02-2014  12  (13-1)
3   05-02-2014  12  (12-0)
4   06-02-2014  11  (12-1)
5   07-02-2014  8   (11-3)
6   08-02-2014  8   (8-0)
7   09-02-2014  6   (8-2)
8   10-02-2014  6   (6-0)
9   11-02-2014  5   (6-1)
10  12-02-2014  2   (5-3)
11  13-02-2014  2   (2-0)
12  14-02-2014  1   (2-1)

我不愿意用游标作为解决方案。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-19 19:51:23

不如像这样

代码语言:javascript
运行
复制
DECLARE @XCount INT = 15

;WITH Vals AS(
  SELECT ID, Dates, [Count] OriginalCount, @XCount - ISNULL([COUNT],0) NewCount
  FROM Table1
  WHERE ID = 1  
  UNION ALL
  SELECT t.ID, t.Dates, t.[Count], v.NewCount - ISNULL(t.[Count],0)
  FROM Table1 t INNER JOIN Vals v ON t.ID = v.ID + 1
)
SELECT *
FROM Vals

演示

请注意,这是一个递归查询,有时(直到技术允许,比如SQLserver2012 LAGRunning totals) O尔德才能工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21890677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档