求一查询语句的写法,急
有如下一表:
AAA BBB
A 2
B 3
C 4
D 5
想求如下结果,如何写
AAA BBB CCC
A 2 2
B 3 5
C 4 9
D 5 14
问题点数:0、回复次数:17Top
1 楼shuiniu(飞扬的梦)(我是一头只吃西红柿的水牛)回复于 2003-12-01 13:58:18 得分 0
select aaa,bbb ,(select sum(bbb) from 表 b where b.aaa <=a.aaa) ccc from 表 aTop
2 楼Rotaxe(程序员)回复于 2003-12-01 14:07:00 得分 0
select aaa, bbb, ccc= bbb+ isnull((select max(bbb) from 表 a1 where a.term>a1.term),0) from 表 a
Top
3 楼witzgf2(java殉道者)回复于 2003-12-01 14:07:21 得分 0
同意楼上Top
4 楼dlpseeyou(豆子)回复于 2003-12-01 14:07:55 得分 0
create table test1
( aaa varchar(2),
bbb int
)
insert into test1(aaa,bbb) values('A',2)
insert into test1(aaa,bbb) values('B',3)
insert into test1(aaa,bbb) values('C',4)
insert into test1(aaa,bbb) values('D',5)
select aaa aaa,bbb bbb,(select sum(bbb) from test1 bb where bb.aaa<=aa.aaa) ccc from test1 aaTop
5 楼dlpseeyou(豆子)回复于 2003-12-01 14:09:56 得分 0
程序员的语句应改为:
select aaa, bbb, ccc= bbb+ isnull((select max(bbb) from 表名 a1 where a.aaa>a1.aaa),0) from 表名 aTop
6 楼victorycyz(--)回复于 2003-12-01 14:11:22 得分 0
select *,(select sum(bbb) from table_name a where a.aaa <=tem.aaa) ccc from table_name temTop
7 楼yanlw()回复于 2003-12-01 15:37:52 得分 0
好象没一个对的,是不是大家误解我的意思了,我再把题目详说一次:
有如下一表名table:
AAA BBB
f 10
h 5
a 20
t 15
想求如下结果,如何写
AAA BBB CCC
f 10 10
h 5 15
a 20 35
t 15 50
Top
8 楼yanlw()回复于 2003-12-01 15:41:16 得分 0
upTop
9 楼dlpseeyou(豆子)回复于 2003-12-01 15:43:20 得分 0
create table test1
( aaa varchar(2),
bbb int
)
insert into test1(aaa,bbb) values('A',2)
insert into test1(aaa,bbb) values('B',3)
insert into test1(aaa,bbb) values('C',4)
insert into test1(aaa,bbb) values('D',5)
select aaa aaa,bbb bbb,(select sum(bbb) from test1 bb where bb.aaa<=aa.aaa) ccc from test1 aa
你试了吗?
Top
10 楼yanlw()回复于 2003-12-01 15:47:34 得分 0
to dlpseeyou(豆子) :
假设我AAA列有100000行,那我是不是要写100000行呢Top
11 楼azsoft(Try my best)回复于 2003-12-01 16:48:46 得分 0
晕?!!Top
12 楼dlpseeyou(豆子)回复于 2003-12-01 16:55:44 得分 0
aaa,bbb你也想自动产生,对不对Top
13 楼txlicenhe(马可)回复于 2003-12-01 19:12:59 得分 0
同意豆子。Top
14 楼fuyaojiang(瑶瑶)回复于 2003-12-01 19:40:08 得分 0
ALTER TABLE tablename ADD id int identity(1,1)
select aaa,bbb,(select sum(isnull(bbb,0)) from tablename a where a.aaa<=b.aaa) as ccc from tablename b
alter table tablename DROP COLUMN idTop
15 楼echo_llee()回复于 2003-12-01 20:10:24 得分 0
/*假设表结构为*/
CREATE TABLE mytable (
[AAA] [varchar] (50) ,
[BBB] [decimal] (12,2) not null default 0 )
/*插入测试数据*/
insert into mytable(AAA,BBB) values('a',10)
insert into mytable(AAA,BBB) values('b',5)
insert into mytable(AAA,BBB) values('c',20)
insert into mytable(AAA,BBB) values('d',15)
/*建立存储过程*/
CREATE PROCEDURE [dbo].[sp_sum_BBB]
AS
begin
if exists (select * from TEMPDB.DBO.sysobjects where name = '##QUERY1')
drop table ##query1
CREATE TABLE ##query1 (
[AAA] [varchar] (50) ,
[BBB] [decimal] (12,2) not null default 0 ,
[CCC] [decimal] (12,2) not null default 0
)
insert into ##query1 select AAA,BBB,0 as CCC from mytable
declare @val2 as decimal(12,2)
select @val2= 0
UPDATE ##query1 set @val2=CCC=@val2 + BBB
select * from ##query1
if exists (select * from TEMPDB.DBO.sysobjects where name = '##QUERY1')
drop table ##query1
end
GO
Top
16 楼yanlw()回复于 2003-12-02 10:06:06 得分 0
太复杂Top
17 楼echo_llee()回复于 2003-12-02 20:05:59 得分 0
事实上核心句子就一句话:
UPDATE ##query1 set @val2=CCC=@val2 + BBB
只要知道这语句的含义,就OK了。
Top




