sql实现比较困难,除非用游标,看过很多软件,好像都是在前台程序实现
up一下
up一下
解决方案 »
- sql2000组件的卸载
- 本人菜鸟。。请教个问题!
- 重新发:简单问题
- MSSQL Server2005中,如何可以发现所有的访问记录(访问数据库/表等)?
- 鸟哥初问(+100):请问用SQL一般语句来实现group by的功能该怎么做?
- 利用SQL2005的作业和发邮件功能来实现评论的发邮件功能,这个想法如何?谢谢了
- Msg 16916 cursor with then name 'tran_Cursor' does not exist
- 早上执行了一个存储过程报错,请问是什么意思?怎么处理??
- 有什么第三方的工具能调试存储过程?
- 关于sql server 多表大数据实时计算的问题
- 各位大虾,求一个sql语句。
- 这条SQL语句怎么写?
期间 日期 事物类型 单位 收入 发出 结存
2005·1 2005-1-1 期初结存 公斤 0 0 594.66
2005·1 2005-1-1 领料单 公斤 0 427.7 NULL
2005·1 2005-1-4 领料单 公斤 0 1400 NULL
2005·1 2005-1-4 领料单 公斤 0 1512 NULL
2005·1 2005-1-5 外购入库 公斤 4.5 0 NULL
2005·1 2005-1-5 外购入库 公斤 560 0 NULL
2005·1 2005-1-5 外购入库 公斤 4298 0 NULL
2005·1 2005-1-5 领料单 公斤 0 -70 NULL
2005·1 2005-1-10 外购入库 公斤 2646 0 NULL
2005·1 2005-1-12 领料单 公斤 0 1470 NULL
2005·1 2005-1-17 领料单 公斤 0 -84 NULL
2005·1 2005-1-17 领料单 公斤 0 84 NULL
2005·1 2005-1-17 领料单 公斤 0 1428 NULL
2005·1 2005-1-31 本期合计 公斤 7508.5 6167.7 1935.46
2005·1 2005-1-31 期末结存 公斤 0 0 1935.46
2005·1 2005-1-31 本年累计 公斤 7508.5 6167.7 1935.46
2005·2 2005-2-1 期初结存 公斤 0 0 1935.46
2005·2 2005-2-1 领料单 公斤 0 -110 NULL
2005·2 2005-2-1 领料单 公斤 0 110 NULL
2005·2 2005-2-17 领料单 公斤 0 -146 NULL
2005·2 2005-2-28 本期合计 公斤 0 -146 2081.46
2005·2 2005-2-28 期末结存 公斤 0 0 2081.46
2005·2 2005-2-28 本年累计 公斤 7508.5 6021.7 2081.46
if exists(select * from sysobjects where id=object_id('#'))
drop table #
gocreate table #
(
ID int identity,
[期间] varchar(20),
[日期] datetime,
[事物类型] varchar(20),
[单位] varchar(20),
[收入] money ,
[发出] money,
[结存] money
)--插入测试数据
insert #([期间],[日期],[事物类型],[单位], [收入],[发出],[结存])
select '2005-1','2005-1-1','期初结存','公斤',0,0,594.66 union all
select '2005-1','2005-1-1','领料单','公斤',0,427.7,null union all
select '2005-1','2005-1-4','领料单','公斤',0,1400,null union all
select '2005-1','2005-1-4','领料单','公斤',0,1512,null union all
select '2005-1','2005-1-5','外购入库','公斤',4.5,0,null union all
select '2005-1','2005-1-5','外购入库','公斤',560,0,null union all
select '2005-1','2005-1-5','外购入库','公斤',4298,0,null union all
select '2005-1','2005-1-5','领料单','公斤',0,-70,null union all
select '2005-1','2005-1-10','外购入库','公斤',2646,0,null union all
select '2005-1','2005-1-5','领料单','公斤',0,1470,null union all
select '2005-1','2005-1-5','领料单','公斤',0,-84,null union all
select '2005-1','2005-1-5','领料单','公斤',0,84,null union all
select '2005-1','2005-1-5','领料单','公斤',0,1428,null
--select * from #declare @id int,@jiecun money,@tmp money
declare @sql nvarchar(1000)declare cur cursor for
select ID,[结存] from #
open cur
fetch next from cur into @id,@jiecun
while @@fetch_status=0
begin
if @id=1
begin
set @tmp=@jiecun
fetch next from cur into @id,@jiecun
continue;
end
else
begin
set @sql=N'update # set [结存]=[收入]-[发出]+'+cast(@tmp as nvarchar)+N' where ID='+cast(@ID as nvarchar) +
N'select @t=[结存] from # where ID='+cast(@ID as nvarchar)
print @sql
exec sp_executesql @sql,N'@t money output',@jiecun output
set @tmp=@jiecun
fetch next from cur into @id,@jiecun
end
end
close cur
deallocate cur--查询结果
select * from #--删除临时表
drop table #
set nocount off结果:
1 2005-1 2005-1-1 期初结存 公斤 .0000 .0000 594.6600
2 2005-1 2005-1-1 领料单 公斤 .0000 427.7000 166.9600
3 2005-1 2005-1-4 领料单 公斤 .0000 1400.0000 -1233.0400
4 2005-1 2005-1-4 领料单 公斤 .0000 1512.0000 -2745.0400
5 2005-1 2005-1-5 外购入库 公斤 4.5000 .0000 -2740.5400
6 2005-1 2005-1-5 外购入库 公斤 560.0000 .0000 -2180.5400
7 2005-1 2005-1-5 外购入库 公斤 4298.0000 .0000 2117.4600
8 2005-1 2005-1-5 领料单 公斤 .0000 -70.0000 2187.4600
9 2005-1 2005-1-10 外购入库 公斤 2646.0000 .0000 4833.4600
10 2005-1 2005-1-5 领料单 公斤 .0000 1470.0000 3363.4600
11 2005-1 2005-1-5 领料单 公斤 .0000 -84.0000 3447.4600
12 2005-1 2005-1-5 领料单 公斤 .0000 84.0000 3363.4600
13 2005-1 2005-1-5 领料单 公斤 .0000 1428.0000 1935.4600
怎么办?
怎么办?
原贴为:
生成的表格如下,请教如何将'结存'列为NULL处添入结存数量?
期间 日期 事物类型 单位 收入 发出 结存
2005·1 2005-1-1 期初结存 公斤 0 0 594.66
2005·1 2005-1-1 领料单 公斤 0 427.7 NULL
2005·1 2005-1-4 领料单 公斤 0 1400 NULL
2005·1 2005-1-4 领料单 公斤 0 1512 NULL
2005·1 2005-1-5 外购入库 公斤 4.5 0 NULL
2005·1 2005-1-5 外购入库 公斤 560 0 NULL
2005·1 2005-1-5 外购入库 公斤 4298 0 NULL
2005·1 2005-1-5 领料单 公斤 0 -70 NULL
2005·1 2005-1-31 本期合计 公斤 7508.5 6167.7 1935.46
2005·1 2005-1-31 期末结存 公斤 0 0 1935.46
2005·1 2005-1-31 本年累计 公斤 7508.5 6167.7 1935.46
2005·2 2005-2-1 期初结存 公斤 0 0 1935.46
2005·2 2005-2-1 领料单 公斤 0 -110 NULL
2005·2 2005-2-1 领料单 公斤 0 110 NULL
2005·2 2005-2-17 领料单 公斤 0 -146 NULL
2005·2 2005-2-28 本期合计 公斤 0 -146 2081.46
2005·2 2005-2-28 期末结存 公斤 0 0 2081.46
2005·2 2005-2-28 本年累计 公斤 7508.5 6021.7 2081.46