日期:2014-05-18 浏览次数:20885 次
with 进货 as (select row_number()over(partition by 仓库编号,商品编号 order by 仓库编号) as row ,* from 进货单表) select *,(select sum(数量) from 进货 where 仓库编号=a.仓库编号 and 商品编号=a.商品编号 and row<=a.row)+b.数量基数 from 进货 as a inner join 基数表 as b on a.仓库编号=b.仓库编号
------解决方案--------------------
;with cte as
(
select rn=ROW_NUMBER() over(order by 仓库编号),*,b.基数 from tb a join tb1 b on a.仓库编号=b.仓库编号
)
select y.仓库编号,y.商品编号,y.数量,y.基数+(select SUM(x.数量) FROM CTE x where x.仓库编号=y.仓库编号 AND x.rn<y.rn) from cte y
-- tb 是第二个表 tb1是第一个
-- tb看就不是还有一个顺序列段?在over(partition by 仓库编号 order by getdate())-- 这里
------解决方案--------------------
SQL2000:进货单表沒有標識大小或日期?
--沒有時可用臨時表
select IDENTITY(INT,1,1) as row ,*
INTO #进货
from 进货单表
select
*,(select sum(数量) from #进货 where 仓库编号=a.仓库编号 and 商品编号=a.商品编号 and row<=a.row)+b.数量基数
from #进货 as a
inner join 基数表 as b on a.仓库编号=b.仓库编号
--有時可用
select
*,(select sum(数量) from 进货单表 where 仓库编号=a.仓库编号 and 商品编号=a.商品编号 and 日期<=a.日期)+b.数量基数
from 进货单表 as a
inner join 基数表 as b on a.仓库编号=b.仓库编号