关于进销存中日报表及月结帐
一、在一个进销存系统中,设计了进货主表与从表,销售主表与从表,还有一个库存表(没有设置时间字段,每次进货和销售时,实时修改库存数量),通过多表连接可以查询实时库存和进货、销售数量。现在想要能形成下面的日报表,不知怎么做?进而能查询任意一天的日报表又该如何?
		日报表       2007-09-05
产品    型号	期初数量	进货数量	销售数量	期末数量   
Nokia	7610	2	10	5	7  
Nokia   6110    3	5	4	4  
Moto    A1200   5	4	1	8	  
Moto    V3i     6		4	2
二、另外这种系统一般设置有月结功能,主要目的是什么?怎么实现?
------解决方案----------------------给个例自己看看,从你的描述中我不出来语句如何写?
现有如下结构的表:
编号----产品名称----产量(int)----日期(varchar)
1   ----某产品1 ----100      ----20060922
2   ----某产品1 ----130      ----20060923
3   ----某产品2 ----104      ----20060924
5   ----某产品1 ----100      ----20060925
7   ----某产品1 ----200      ----20060926
.
.
.
现在要求查询每天的累计产量如:
20060923的累计产量就为20060922的100+20060923的130=230.
20060924的累计产量就为230+104=334,
20060925的累计产量为334+100=434...
请问该如何查询?
create table #a(
      [id] [char] (10),
      [proname] [char] (10),
      [output] [int],
      [dt] [datetime]
)
insert into #a(id,proname,output,dt) values('1','某产品1',100,'2006-09-22')
insert into #a(id,proname,output,dt) values('2','某产品1',130,'2006-09-23')
insert into #a(id,proname,output,dt) values('3','某产品2',104,'2006-09-24')
insert into #a(id,proname,output,dt) values('5','某产品1',100,'2006-09-25')
insert into #a(id,proname,output,dt) values('7','某产品1',200,'2006-09-26')
select *,(select sum(output) from #a where dt<=b.dt) as '每日总量'
from #a b
order by dt
drop table #a
id         proname    output      dt                                                     每日总量       
---------- ---------- ----------- ------------------------------------------------------ -----------  
1          某产品1       100         2006-09-22 00:00:00.000                                100
2          某产品1       130         2006-09-23 00:00:00.000                                230
3          某产品2       104         2006-09-24 00:00:00.000                                334
5          某产品1       100         2006-09-25 00:00:00.000                                434
7          某产品1       200         2006-09-26 00:00:00.000                                634
(所影响的行数为 5 行)
if object_id('pubs..tb') is not null
  drop table tb
go
create table tb(日期 varchar(10),品种 varchar(10),产量 int)
insert into tb(日期,品种,产量) values('2007-04-04',    'JC10' ,        20)
insert into tb(日期,品种,产量) values('2007-04-04',    'T/C20',        30)
insert into tb(日期,品种,产量) values('2007-04-05',    'T/C20',        40)
insert into tb(日期,品种,产量) values('2007-04-05',    'JC10' ,        10)
insert into tb(日期,品种,产量) values('2007-04-06',    'JC10' ,        15)
go
select *,(select sum(产量) from tb where 日期<=b.日期 and 品种 = b.品种) as '本月累计' from tb b
drop table tb
日期       品种       产量        本月累计       
---------- ---------- ----------- -----------  
2007-04-04 JC10       20          20
2007-04-04 T/C20      30          30
2007-04-05 T/C20      40          70
2007-04-05 JC10       10          30
2007-04-06 JC10       15          45
(所影响的行数为 5 行)
------解决方案--------------------日报表               2007-09-05  
产品         型号 期初数量 进货数量 销售数量 期末数量    
Nokia 7610 2 10 5 7  
Nokia       6110         3 5 4 4  
Moto         A1200       5 4 1 8  
Moto         V3i           6 4 2  
日报表: 进货/销售 的时候对 进货/销售,期末数量进行修改
感觉用触发器比较好;二、另外这种系统一般设置有月结功能,主要目的是什么?怎么实现?
主要目的是: 更正期初(一个周期改一次),
   实现: 月结的时候,用期末去修改期初,表示一个周期的完成
------解决方案--------------------参看:http://blo