SQL语法怎么生成累计Column

Frank6600 2005-06-22 06:19:39
假设有一个简单的表格,只有一个Field叫A ,它的数据也很简单,分别是1,2,3....:

A
-
1
2
3
4
5

那,我现在要写一个SQL语法,生成一个有累计Column的结果,例如:

A
----------
1 (=0+1)
3 (=1+2)
6 (=3+3)
10 (=6+4)
15 (=10+5)

不要使用Cursor,暂存表,这个语法要怎么下呢﹖

说明一下,这个语法两年多前我曾在某本书上看过,是真的可以做的,只是我忘了怎么写了,
如果你正巧知道,麻烦你告诉我,谢谢。
...全文
81 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivianfdlpw 2005-06-22
  • 打赏
  • 举报
回复
create table #
(
num int
)

insert #
select 1 union select 2 union select 3 union select 4 union select 5

select (select isnull(sum(num),1) from # where num<=A.num)col1,
cast(isnull((select sum(num) from # where num<A.num),0) as varchar)+'+'+
cast(num as varchar) [operation]
from # A

drop table #

--结果
/*

col1 operation
----------- --------------
1 0+1
3 1+2
6 3+3
10 6+4
15 10+5
*/
paoluo 2005-06-22
  • 打赏
  • 举报
回复
--建立测试环境
Create Table A(ID Int)
Insert A Select 1
Union Select 2
Union Select 3
Union Select 4
Union Select 5
--测试
Select ID=(Select SUM(ID) from A Where ID<=T.ID) from A T
--删除测试环境
Drop Table A
--结果
/*
ID
1
3
6
10
15
*/
wangdehao 2005-06-22
  • 打赏
  • 举报
回复
Mark
filebat 2005-06-22
  • 打赏
  • 举报
回复
to vivian:原来很多情况, 标量函数是可以省略的哦.
还不知道呢.
vivianfdlpw 2005-06-22
  • 打赏
  • 举报
回复
--结果:

/*

(所影响的行数为 5 行)

-----------
1
3
6
10
15
*/
vivianfdlpw 2005-06-22
  • 打赏
  • 举报
回复
create table #
(
num int
)

insert #
select 1 union select 2 union select 3 union select 4 union select 5

select (select isnull(sum(num),1) from # where num<=A.num) from # A

drop table #

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧