create table #T(aID varchar(10),mc varchar(10),dw varchar(10),sl int,bm varchar(10))
insert into #T select rtrim('0 '),rtrim('机柜 '),'台',5 ,'000'
insert into #T select rtrim('1 '),rtrim('电脑 '),'台',10,'001'
insert into #T select rtrim('1-1'),rtrim('CPU '),'个',10,'002'
insert into #T select rtrim('2 '),rtrim('桌子 '),'张',20,'004'
insert into #T select rtrim('3 '),rtrim('凳子 '),'张',20,'005'
insert into #T select rtrim('4 '),rtrim('电脑 '),'台',10,'001'
insert into #T select rtrim('4-1'),rtrim('CPU '),'个',10,'002'
insert into #T select rtrim('5 '),rtrim('凳子 '),'把',20,'005'
insert into #T select rtrim('6 '),rtrim('参考书'),'本',15,'006'select
a.*,
sl2 = (case
when not exists(select 1 from #T where bm=a.bm and aID<a.aID)
then (select sum(sl) from #T where bm=a.bm)
else 0
end)
from
#T a
order by
a.aID
/*
aID mc dw sl bm sl2
0 机柜 台 5 000 5
1 电脑 台 10 001 20
1-1 CPU 个 10 002 20
2 桌子 张 20 004 20
3 凳子 张 20 004 40
4 电脑 台 10 001 0
4-1 CPU 个 10 002 0
5 凳子 把 20 005 0
6 参考书 本 15 006 15
*/drop table #T
insert into #T select rtrim('0 '),rtrim('机柜 '),'台',5 ,'000'
insert into #T select rtrim('1 '),rtrim('电脑 '),'台',10,'001'
insert into #T select rtrim('1-1'),rtrim('CPU '),'个',10,'002'
insert into #T select rtrim('2 '),rtrim('桌子 '),'张',20,'004'
insert into #T select rtrim('3 '),rtrim('凳子 '),'张',20,'005'
insert into #T select rtrim('4 '),rtrim('电脑 '),'台',10,'001'
insert into #T select rtrim('4-1'),rtrim('CPU '),'个',10,'002'
insert into #T select rtrim('5 '),rtrim('凳子 '),'把',20,'005'
insert into #T select rtrim('6 '),rtrim('参考书'),'本',15,'006'select
a.*,
sl2 = (case
when not exists(select 1 from #T where bm=a.bm and aID<a.aID)
then (select sum(sl) from #T where bm=a.bm)
else 0
end)
from
#T a
order by
a.aID
/*
aID mc dw sl bm sl2
0 机柜 台 5 000 5
1 电脑 台 10 001 20
1-1 CPU 个 10 002 20
2 桌子 张 20 004 20
3 凳子 张 20 004 40
4 电脑 台 10 001 0
4-1 CPU 个 10 002 0
5 凳子 把 20 005 0
6 参考书 本 15 006 15
*/drop table #T
解决方案 »
- msde 2000 数据库备份加密有问题,请高手看看!
- update问题
- 作业里面调用存储过程,执行成功而且过程最后一句插入日志记录成功,但是过程前面的Insert 语句却好像没有执行。过程详见内容
- 写存储过程动态SQL如何处理ntext类型
- 紧急求助,大家帮忙啊,小女子先谢谢大家了!着急啊……
- 链接服务器查询速度慢,且产生分布式事务错误。
- 更新一张表的列,却需要比较比较另一张表的3列取出这列的SQL语句。
- SQLSERVER 2005 与 2000 用select 语句累加字符串并排序所产的问题...
- 有关text、ntext或image列的问题
- ms sql 大数据 类型
- 在存储过程中,我想实现拼接字段的功能,有什么办法实现呢?
- 求从dataset中取数据的方法,在线等
create table #T(aID varchar(10),mc varchar(10),dw varchar(10),sl int,bm varchar(10))
insert into #T select rtrim('0 '),rtrim('机柜 '),'台',5 ,'000'
insert into #T select rtrim('1 '),rtrim('电脑 '),'台',10,'001'
insert into #T select rtrim('1-1'),rtrim('CPU '),'个',10,'002'
insert into #T select rtrim('2 '),rtrim('桌子 '),'张',20,'004'
insert into #T select rtrim('3 '),rtrim('凳子 '),'张',20,'005'
insert into #T select rtrim('4 '),rtrim('电脑 '),'台',10,'001'
insert into #T select rtrim('4-1'),rtrim('CPU '),'个',10,'002'
insert into #T select rtrim('5 '),rtrim('凳子 '),'把',20,'005'
insert into #T select rtrim('6 '),rtrim('参考书'),'本',15,'006'
--执行查询
select
a.aID,
a.mc,
a.dw,
sl = (case
when not exists(select 1 from #T where bm=a.bm and aID<a.aID)
then (select sum(sl) from #T where bm=a.bm)
else 0
end),
a.bm
from
#T a
order by
a.aID--输出结果
/*
aID mc dw sl bm
0 机柜 台 5 000
1 电脑 台 20 001
1-1 CPU 个 20 002
2 桌子 张 20 004
3 凳子 张 40 004
4 电脑 台 0 001
4-1 CPU 个 0 002
5 凳子 把 0 005
6 参考书 本 15 006
*/--删除测试数据
drop table #T
select sum(sl) from table a where a.bm=table.bm group by bm
)sl2 from table
group by bm没经过测试~ :)