发现一段经典SQL,不用循环游标,一句update代码实现滚动计算结存。为方便理解,结合实例测试之
SELECT * FROM #t1 ORDER BY sn
sn |
sid |
chkshl |
jcshl |
plh |
1 |
S0002 |
20.0000 |
980.0000 |
|
2 |
S0003 |
10.0000 |
1010.0000 |
|
3 |
S0003 |
10.0000 |
1010.0000 |
|
4 |
S0003 |
10.0000 |
1010.0000 |
|
5 |
S0002 |
10.0000 |
980.0000 |
|
6 |
S0002 |
1.0000 |
980.0000 |
|
7 |
S0004 |
20.0000 |
720.0000 |
|
8 |
S0005 |
10.0000 |
530.0000 |
|
9 |
S0005 |
10.0000 |
530.0000 |
|
10 |
S0005 |
10.0000 |
530.0000 |
|
11 |
S0004 |
10.0000 |
720.0000 |
|
12 |
S0004 |
1.0000 |
720.0000 |
|
SELECT * INTO #t2 FROM #t1 ORDER BY sid,sn
sn |
sid |
chkshl |
jcshl |
plh |
1 |
S0002 |
20.0000 |
980.0000 |
|
5 |
S0002 |
10.0000 |
980.0000 |
|
6 |
S0002 |
1.0000 |
980.0000 |
|
2 |
S0003 |
10.0000 |
1010.0000 |
|
3 |
S0003 |
10.0000 |
1010.0000 |
|
4 |
S0003 |
10.0000 |
1010.0000 |
|
7 |
S0004 |
20.0000 |
720.0000 |
|
11 |
S0004 |
10.0000 |
720.0000 |
|
12 |
S0004 |
1.0000 |
720.0000 |
|
8 |
S0005 |
10.0000 |
530.0000 |
|
9 |
S0005 |
10.0000 |
530.0000 |
|
10 |
S0005 |
10.0000 |
530.0000 |
|
DECLARE @plh int,@jcshl DECIMAL(18,4),@sid CHAR(5)
UPDATE #t2 SET
@jcshl=jcshl=CASE WHEN sid=@sid THEN @jcshl-chkshl ELSE jcshl-chkshl END,
@plh=plh=ISNULL(@plh,0)+1,
@sid=sid=sid
SELECT * FROM #t2
sn |
sid |
chkshl |
jcshl |
plh |
1 |
S0002 |
20.0000 |
960.0000 |
1 |
5 |
S0002 |
10.0000 |
950.0000 |
2 |
6 |
S0002 |
1.0000 |
949.0000 |
3 |
2 |
S0003 |
10.0000 |
1000.0000 |
4 |
3 |
S0003 |
10.0000 |
990.0000 |
5 |
4 |
S0003 |
10.0000 |
980.0000 |
6 |
7 |
S0004 |
20.0000 |
700.0000 |
7 |
11 |
S0004 |
10.0000 |
690.0000 |
8 |
12 |
S0004 |
1.0000 |
689.0000 |
9 |
8 |
S0005 |
10.0000 |
520.0000 |
10 |
9 |
S0005 |
10.0000 |
510.0000 |
11 |
10 |
S0005 |
10.0000 |
500.0000 |
12 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构