排序 量 现有库存 计算后库存量(这一列怎么计算出来?)
1 -5 185 180 由于现有库存是185,量是-5,所以计算后库存量为185+(-5)=180
2 -10 185 170 上一行的计算后库存量为180,当前行的量为-10,这一行的计算后库存量为170
3 15 185 185 上一行的计算后库存量为170,当前行的量为15,这一行的计算后库存量为185
4 160 185 345 以下所有行,都是这个规律一直向下推
5 -15 185 330
6 -5 185 325
7 30 185 355
8 -50 185 305
9 -25 185 280
谢谢。。
1 -5 185 180 由于现有库存是185,量是-5,所以计算后库存量为185+(-5)=180
2 -10 185 170 上一行的计算后库存量为180,当前行的量为-10,这一行的计算后库存量为170
3 15 185 185 上一行的计算后库存量为170,当前行的量为15,这一行的计算后库存量为185
4 160 185 345 以下所有行,都是这个规律一直向下推
5 -15 185 330
6 -5 185 325
7 30 185 355
8 -50 185 305
9 -25 185 280
谢谢。。
/*---------------------------------
-- Author : htl258(Tony)
-- Date : 2009-09-21 11:01:21
-- Version: Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86)
Mar 29 2009 10:27:29
Copyright (c) 1988-2008 Microsoft Corporation
Enterprise Evaluation Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)---------------------------------*/
--> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([排序] INT,[量] INT,[现有库存] INT,[计算后] INT)
INSERT [tb]
SELECT 1,-5,185,180 UNION ALL
SELECT 2,-10,185,170 UNION ALL
SELECT 3,15,185,185 UNION ALL
SELECT 4,160,185,345 UNION ALL
SELECT 5,-15,185,330 UNION ALL
SELECT 6,-5,185,325 UNION ALL
SELECT 7,30,185,355 UNION ALL
SELECT 8,-50,185,305 UNION ALL
SELECT 9,-25,185,280
GO
--SELECT * FROM [tb]-->SQL查询如下:
SELECT *,
计算后的库存=(SELECT SUM([量]) FROM tb WHERE 排序<=t.排序)+现有库存
FROM tb t
/*
排序 量 现有库存 计算后 计算后的库存
----------- ----------- ----------- ----------- -----------
1 -5 185 180 180
2 -10 185 170 170
3 15 185 185 185
4 160 185 345 345
5 -15 185 330 330
6 -5 185 325 325
7 30 185 355 355
8 -50 185 305 305
9 -25 185 280 280(9 行受影响)
*/
declare @tb table([a] int,[b] int,[c] int,[d] int)
insert @tb
select 1,-5,185,180 union all
select 2,-10,185,170 union all
select 3,15,185,185 union all
select 4,160,185,345 union all
select 5,-15,185,330 union all
select 6,-5,185,325 union all
select 7,30,185,355 union all
select 8,-50,185,305 union all
select 9,-25,185,280select * ,计算后库存量=c+(select sum(b) from @tb where a<=t.a)from @tb t
INSERT [tb]
SELECT 1,-5,185 UNION ALL
SELECT 2,-10,185 UNION ALL
SELECT 3,15,185 UNION ALL
SELECT 4,160,185 UNION ALL
SELECT 5,-15,185 UNION ALL
SELECT 6,-5,185 UNION ALL
SELECT 7,30,185 UNION ALL
SELECT 8,-50,185 UNION ALL
SELECT 9,-25,185
GOselect *,计算后= (select top 1 现有库存 from tb order by 排序) + (select sum(量) from tb where 排序 <= t.排序) from tb tdrop table tb/*
排序 量 现有库存 计算后
----------- ----------- ----------- -----------
1 -5 185 180
2 -10 185 170
3 15 185 185
4 160 185 345
5 -15 185 330
6 -5 185 325
7 30 185 355
8 -50 185 305
9 -25 185 280(所影响的行数为 9 行)*/
楼主应当用幂指数来写sql就行了。
----------- ----------- ----------- ----------- -----------
200901 5 15 1 180
200902 10 25 1 ?
200903 15 45 1 ?
200904 160 35 1 ?
200905 15 10 1 ?
200906 85 20 1 ?
200907 30 15 1 ?
200908 50 85 1 ?
200909 25 5 1 ?--------------------------------
说明:科目余额方向:(1:借; -1 为贷);
if(科目余额方向 > 0){
当前期间科目余额= 前一期间科目余额 + 借方发生金额 - 贷方发生金额;
} else {
当前期间科目余额= 前一期间科目余额 + 贷方发生金额 - 借方发生金额 ;
}只有第一期间有科目余额值,现在要把每期间的余额根据每期的发生金额,计算出来,并update到表里,请问怎么写?