日期 类别 名称 单位 入库 调拔入 出库出 调拔出 报损
2007-11-8 机具设备 电钻 台 1525 1 11100 100 100
2007-11-9 机具设备 角磨机 台 2456 1 1200 0 200
2007-11-10 机具设备 角磨机 台 35 1 125 0 30
这是一个从进销存里查出来的视图文件,现在还有一张报表要弄成这个样子的:
类别 名称 至本期结存数 本期入 本月出 本期结存其中 "至本期结存数" 就是本期以前所有的入库-出库,而本期的定义则是任意一个时间段,比如可能是从今天到以前的一个星期或一个月,因此不能使用结帐的方式,必须用查询灵活的定义本期时间来查询
2007-11-8 机具设备 电钻 台 1525 1 11100 100 100
2007-11-9 机具设备 角磨机 台 2456 1 1200 0 200
2007-11-10 机具设备 角磨机 台 35 1 125 0 30
这是一个从进销存里查出来的视图文件,现在还有一张报表要弄成这个样子的:
类别 名称 至本期结存数 本期入 本月出 本期结存其中 "至本期结存数" 就是本期以前所有的入库-出库,而本期的定义则是任意一个时间段,比如可能是从今天到以前的一个星期或一个月,因此不能使用结帐的方式,必须用查询灵活的定义本期时间来查询
as
select * into # from listab where listdate between @frountdate and @todate
select type, (a+b) totalru, (c+d) totalchu, (a+b-c-d) jieyu from
(select type, sum(ruku) a,sum(boru) b,sum(chuku) c,sum(bochu) d from # group by type) T1
...
goexec p_my '2007-11-01','2007-12-01'
IF object_id('进销存','U') IS NOT NULL
DROP TABLE 进销存SELECT '2007-11-8' 日期,'机具设备' 类别,'电钻' 名称,'台' 单位,
1525 入库,1 调拔入,1100 出库出,100 调拔出,100 报损
INTO 进销存
UNION ALL
SELECT '2007-11-9','机具设备','角磨机','台',2456,1,1200,0,200
UNION ALL
SELECT '2007-11-10','机具设备','电钻','台',35,1,125,0,30
UNION ALL
SELECT '2008-11-9','机具设备','电钻','台',2456,1,1200,0,200
UNION ALL
SELECT '2008-11-10','机具设备','角磨机','台',35,1,125,0,30
UNION ALL
SELECT '2009-11-9','机具设备','电钻','台',2456,1,1200,0,200
UNION ALL
SELECT '2009-11-10','机具设备','角磨机','台',35,1,125,0,30
UNION ALL
SELECT '2009-12-9','机具设备','电钻','台',2456,1,1200,0,200
UNION ALL
SELECT '2009-12-10','机具设备','电钻','台',35,1,125,0,30alter table 进销存 alter column 日期 smalldatetimeSELECT *
FROM 进销存SELECT *
FROM 进销存
WHERE 日期 BETWEEN '2007-11-10' AND '2009-12-9'SELECT 类别,
名称,
至本期结存数 = isnull((SELECT SUM(入库 + 调拔入 - 出库出 - 调拔出 - 报损)
FROM 进销存
WHERE 日期 < '2007-11-10'
AND 类别 = a.类别
AND 名称 = a.名称
GROUP BY 类别,名称),0),
本期入 = SUM(入库 + 调拔入),
本期出 = SUM(出库出 + 调拔出),
本期结存 = SUM(入库 + 调拔入 - 出库出 - 调拔出 - 报损)
+ isnull((SELECT SUM(入库 + 调拔入 - 出库出 - 调拔出 - 报损)
FROM 进销存
WHERE 日期 < '2007-11-10'
AND 类别 = a.类别
AND 名称 = a.名称
GROUP BY 类别,名称),0)
FROM 进销存 a
WHERE 日期 BETWEEN '2007-11-10' AND '2009-12-9'
GROUP BY 类别,名称IF object_id('进销存','U') IS NOT NULL
DROP TABLE 进销存
/*
结果:(9 行受影响)
日期 类别 名称 单位 入库 调拔入 出库出 调拔出 报损
----------------------- -------- ------ ---- ----------- ----------- ----------- ----------- -----------
2007-11-08 00:00:00 机具设备 电钻 台 1525 1 1100 100 100
2007-11-09 00:00:00 机具设备 角磨机 台 2456 1 1200 0 200
2007-11-10 00:00:00 机具设备 电钻 台 35 1 125 0 30
2008-11-09 00:00:00 机具设备 电钻 台 2456 1 1200 0 200
2008-11-10 00:00:00 机具设备 角磨机 台 35 1 125 0 30
2009-11-09 00:00:00 机具设备 电钻 台 2456 1 1200 0 200
2009-11-10 00:00:00 机具设备 角磨机 台 35 1 125 0 30
2009-12-09 00:00:00 机具设备 电钻 台 2456 1 1200 0 200
2009-12-10 00:00:00 机具设备 电钻 台 35 1 125 0 30(9 行受影响)日期 类别 名称 单位 入库 调拔入 出库出 调拔出 报损
----------------------- -------- ------ ---- ----------- ----------- ----------- ----------- -----------
2007-11-10 00:00:00 机具设备 电钻 台 35 1 125 0 30
2008-11-09 00:00:00 机具设备 电钻 台 2456 1 1200 0 200
2008-11-10 00:00:00 机具设备 角磨机 台 35 1 125 0 30
2009-11-09 00:00:00 机具设备 电钻 台 2456 1 1200 0 200
2009-11-10 00:00:00 机具设备 角磨机 台 35 1 125 0 30
2009-12-09 00:00:00 机具设备 电钻 台 2456 1 1200 0 200(6 行受影响)类别 名称 至本期结存数 本期入 本期出 本期结存
-------- ------ ----------- ----------- ----------- -----------
机具设备 电钻 226 7407 3725 3278
机具设备 角磨机 1057 72 250 819(2 行受影响)
*/