关于循环累加,对比大小的语句 本帖最后由 thjin2007 于 2011-09-16 15:22:17 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 入库明细表累加select 入库单号, 行号 ,物料号, 入库数=(select sum(入库数) from tb where 物料号=t.物料号 and 入库单号<t.入库单号) from tb t 2楼, 存储过程如何定啊?3楼, and 入库单号<t.入库单号) 是什么意思? 好像只有累加,但没有对比吧?谢谢!! create table TB1(物料号 varchar(10),库存数 int,仓库号 varchar(10))insert into tb1 values('A1' ,100 ,'001')insert into tb1 values('A2' ,300 ,'001')create table TB2(入库单号 varchar(10),行号 varchar(10),物料号 varchar(10), 入库数 int)insert into tb2 values('B001', '01', 'A1', 30)insert into tb2 values('B002', '01', 'A1', 50) insert into tb2 values('B003', '02', 'A2', 70)goselect m.*, 累计数 = (case when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) <= n.库存数 then (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) else m.入库数 end)from tb2 m , tb1 nwhere m.物料号 = n.物料号drop table tb1 , tb2 /*入库单号 行号 物料号 入库数 累计数 ---------- ---------- ---------- ----------- ----------- B001 01 A1 30 30B002 01 A1 50 80B003 02 A2 70 70(所影响的行数为 3 行)*/ --我增加了几行数据,这样清楚些.create table TB1(物料号 varchar(10),库存数 int,仓库号 varchar(10))insert into tb1 values('A1' ,100 ,'001')insert into tb1 values('A2' ,300 ,'001')create table TB2(入库单号 varchar(10),行号 varchar(10),物料号 varchar(10), 入库数 int)insert into tb2 values('B001', '01', 'A1', 30)insert into tb2 values('B002', '01', 'A1', 50)insert into tb2 values('B003', '01', 'A1', 30)insert into tb2 values('B004', '01', 'A1', 40)insert into tb2 values('B005', '02', 'A2', 70)goselect m.*, 累计数 = (case when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) <= n.库存数 then (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) > n.库存数 + m.入库数 then 0 else (n.库存数 + m.入库数) - (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) end)from tb2 m , tb1 nwhere m.物料号 = n.物料号drop table tb1 , tb2 /*入库单号 行号 物料号 入库数 累计数 ---------- ---------- ---------- ----------- ----------- B001 01 A1 30 30B002 01 A1 50 80B003 01 A1 30 20B004 01 A1 40 0B005 02 A2 70 70(所影响的行数为 5 行)*/ 我上面错了点,更改为如下:create table TB1(物料号 varchar(10),库存数 int,仓库号 varchar(10))insert into tb1 values('A1' ,100 ,'001')insert into tb1 values('A2' ,300 ,'001')create table TB2(入库单号 varchar(10),行号 varchar(10),物料号 varchar(10), 入库数 int)insert into tb2 values('B001', '01', 'A1', 30)insert into tb2 values('B002', '01', 'A1', 50)insert into tb2 values('B003', '01', 'A1', 30)insert into tb2 values('B004', '01', 'A1', 40)insert into tb2 values('B005', '02', 'A2', 70)goselect m.*, 累计数 = (case when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) <= n.库存数 then (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) > n.库存数 + m.入库数 then 0 else n.库存数 end)from tb2 m , tb1 nwhere m.物料号 = n.物料号drop table tb1 , tb2 /*入库单号 行号 物料号 入库数 累计数 ---------- ---------- ---------- ----------- ----------- B001 01 A1 30 30B002 01 A1 50 80B003 01 A1 30 100B004 01 A1 40 0B005 02 A2 70 70(所影响的行数为 5 行)*/ sql递归查询 一个建函数的小问题,求速度解决....急急急 非常诡异的问题! 数据库连接字符串问题. FUNCTION 返回TABLE问题 请问\\~\aa.txt是什么意思? win7 home basic能安装什么版本的SQL select * from mytable where field1=var中var处是变量,该如何使用 远程两台SQL SERVER 服务器连接问题。参与有分。 如何用php访问sqlserver? foxpro导入sql 2008怎么就这么麻烦 sql跨网段访问问题 天煞的,把临时表数据插入实体表超慢,大家来看看
select
入库单号, 行号 ,物料号,
入库数=(select sum(入库数) from tb where 物料号=t.物料号 and 入库单号<t.入库单号)
from
tb t
insert into tb1 values('A1' ,100 ,'001')
insert into tb1 values('A2' ,300 ,'001')create table TB2(入库单号 varchar(10),行号 varchar(10),物料号 varchar(10), 入库数 int)
insert into tb2 values('B001', '01', 'A1', 30)
insert into tb2 values('B002', '01', 'A1', 50)
insert into tb2 values('B003', '02', 'A2', 70)goselect m.*,
累计数 = (case when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) <= n.库存数 then (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) else m.入库数 end)
from tb2 m , tb1 n
where m.物料号 = n.物料号drop table tb1 , tb2 /*
入库单号 行号 物料号 入库数 累计数
---------- ---------- ---------- ----------- -----------
B001 01 A1 30 30
B002 01 A1 50 80
B003 02 A2 70 70(所影响的行数为 3 行)
*/
create table TB1(物料号 varchar(10),库存数 int,仓库号 varchar(10))
insert into tb1 values('A1' ,100 ,'001')
insert into tb1 values('A2' ,300 ,'001')create table TB2(入库单号 varchar(10),行号 varchar(10),物料号 varchar(10), 入库数 int)
insert into tb2 values('B001', '01', 'A1', 30)
insert into tb2 values('B002', '01', 'A1', 50)
insert into tb2 values('B003', '01', 'A1', 30)
insert into tb2 values('B004', '01', 'A1', 40)
insert into tb2 values('B005', '02', 'A2', 70)goselect m.*,
累计数 = (case when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) <= n.库存数 then (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号)
when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) > n.库存数 + m.入库数 then 0
else (n.库存数 + m.入库数) - (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) end)
from tb2 m , tb1 n
where m.物料号 = n.物料号drop table tb1 , tb2 /*
入库单号 行号 物料号 入库数 累计数
---------- ---------- ---------- ----------- -----------
B001 01 A1 30 30
B002 01 A1 50 80
B003 01 A1 30 20
B004 01 A1 40 0
B005 02 A2 70 70(所影响的行数为 5 行)
*/
create table TB1(物料号 varchar(10),库存数 int,仓库号 varchar(10))
insert into tb1 values('A1' ,100 ,'001')
insert into tb1 values('A2' ,300 ,'001')create table TB2(入库单号 varchar(10),行号 varchar(10),物料号 varchar(10), 入库数 int)
insert into tb2 values('B001', '01', 'A1', 30)
insert into tb2 values('B002', '01', 'A1', 50)
insert into tb2 values('B003', '01', 'A1', 30)
insert into tb2 values('B004', '01', 'A1', 40)
insert into tb2 values('B005', '02', 'A2', 70)goselect m.*,
累计数 = (case when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) <= n.库存数 then (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号)
when (select sum(入库数) from tb2 where 物料号 = m.物料号 and 入库单号 <= m.入库单号) > n.库存数 + m.入库数 then 0
else n.库存数 end)
from tb2 m , tb1 n
where m.物料号 = n.物料号drop table tb1 , tb2 /*
入库单号 行号 物料号 入库数 累计数
---------- ---------- ---------- ----------- -----------
B001 01 A1 30 30
B002 01 A1 50 80
B003 01 A1 30 100
B004 01 A1 40 0
B005 02 A2 70 70(所影响的行数为 5 行)
*/