高分求一SQL语句

vfp_system 2006-11-14 05:37:15
数据如下

一,期初数量为200
二,表结构如下:
日期 入库数量  出库数量
2006-1-1 50 30
2006-1-2 100 40
2006-1-3 0 80

得出如下结果
日期 入库数量  出库数量 结存数量
2006-1-1 50 30 220
2006-1-2 100 40 280
2006-1-3 0 80 200

结存数量=上一天的结存数量+入库数量-出库数量
如果为年初的第一天,则有指定的期初量.
...全文
205 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhhdyj 2006-11-15
  • 打赏
  • 举报
回复
用的2000版本。已经测试通过了。上面的运行结果是:
date innum outnum jc
------------------------------------------------------ ----------- ----------- -----
2006-01-01 00:00:00.000 50 30 220
2006-01-02 00:00:00.000 100 40 280
2006-01-03 00:00:00.000 0 80 200
vfp_system 2006-11-14
  • 打赏
  • 举报
回复
hhhdyj(萤火虫)

你用的是不是2005版的SQL?
我在2000版本上运行不了,其他人给的运行速度都太慢啦.
早起晚睡 2006-11-14
  • 打赏
  • 举报
回复
学习了
dawugui 2006-11-14
  • 打赏
  • 举报
回复
declare @ta table(日期 datetime, 入库数量 int,出库数量 int)
insert @ta
select '2006-1-1',50 ,30 union all
select '2006-1-2',100,40 union all
select '2006-1-3',0 ,80

select convert(varchar(10),日期,120) as 日期,入库数量 ,出库数量,
结存数量 = (select sum(入库数量) - sum(出库数量) from @ta a
where a.日期 <= b.日期) + 200
from @ta b

日期 入库数量 出库数量 结存数量
---------- ----------- ----------- -----------
2006-01-01 50 30 220
2006-01-02 100 40 280
2006-01-03 0 80 200

(所影响的行数为 3 行)

splory 2006-11-14
  • 打赏
  • 举报
回复
楼上解决
中国风 2006-11-14
  • 打赏
  • 举报
回复
declare @ta table([日期] datetime, [入库数量] int,[出库数量] int)
insert @ta
select '2006-1-1', 50, 30 union all
select '2006-1-2', 100, 40 union all
select '2006-1-3', 0, 80
/*
得出如下结果
日期 入库数量  出库数量 结存数量
2006-1-1 50 30 220
2006-1-2 100 40 280
2006-1-3 0 80 200
*/

select *,结存数量=(select sum(入库数量-出库数量) from @ta where 日期!>a.日期)
from @ta a

(所影响的行数为 3 行)

日期 入库数量 出库数量 结存数量
------------------------------------------------------ ----------- ----------- -----------
2006-01-01 00:00:00.000 50 30 20
2006-01-02 00:00:00.000 100 40 80
2006-01-03 00:00:00.000 0 80 0

(所影响的行数为 3 行)

xiaoku 2006-11-14
  • 打赏
  • 举报
回复
ls的差不多...
借用一下楼上的数据


DECLARE @tb TABLE([日期] datetime, [入库数量] int, [出库数量] int)
INSERT INTO @tb([日期],[入库数量],[出库数量])
SELECT '2006-1-1', 50, 30
UNION ALL SELECT '2006-1-2', 100, 40
UNION ALL SELECT '2006-1-3', 0, 80

select 日期,入库数量,出库数量,
(select sum(入库数量)-sum(出库数量) from @tb t1
where t1.日期<=t2.日期) +200 as 结存数量
from @tb t2
order by 日期



(所影响的行数为 3 行)

日期 入库数量 出库数量 结存数量
------------------------------------------------------ ----------- ----------- -----------
2006-01-01 00:00:00.000 50 30 220
2006-01-02 00:00:00.000 100 40 280
2006-01-03 00:00:00.000 0 80 200

(所影响的行数为 3 行)
gc_ding 2006-11-14
  • 打赏
  • 举报
回复
select
日期,入库数量,出库数量,
(select sum(入库数量)-sum(出库数量) from 表 t1
where t1.日期<=t2.日期) as 结存数量
from 表 t2
order by 日期
hhhdyj 2006-11-14
  • 打赏
  • 举报
回复
DECLARE @tb TABLE([date] datetime, [innum] int, [outnum] int)
INSERT INTO @tb([date],[innum],[outnum])
SELECT '2006-1-1', 50, 30
UNION ALL SELECT '2006-1-2', 100, 40
UNION ALL SELECT '2006-1-3', 0, 80

SELECT [date],[innum],[outnum],0 AS jc INTO #T FROM @tb ORDER BY [DATE]
DECLARE @JC INT
SET @JC = 200
UPDATE #T SET @JC = @JC + innum - outnum, jc = @jc
select * from #T

DROP TABLE #T

34,576

社区成员

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

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