日期:2014-05-18 浏览次数:20689 次
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.仓库编号