--给个例自己看看,从你的描述中我不出来语句如何写?现有如下结构的表:
编号----产品名称----产量(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 dtdrop 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
gocreate 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)
goselect *,(select sum(产量) from tb where 日期<=b.日期 and 品种 = b.品种) as '本月累计' from tb bdrop 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 行)
编号----产品名称----产量(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 dtdrop 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
gocreate 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)
goselect *,(select sum(产量) from tb where 日期<=b.日期 and 品种 = b.品种) as '本月累计' from tb bdrop 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 行)
解决方案 »
- 如何筛选出相同的纪录?一个老掉牙的问题
- 高手請教!
- 读取数据库中从上数下来第5到第10条记录的SQL语句该如何写?
- 求高人解答下面的SQL
- sql查询问题
- 关于check约束问题
- 大家有用过Visio进行数据库建模吗?小弟遇到了一个问题,定义两个表的关系方面的,请指点。
- 求助:在bat文件中调用osql执行TRUCATE操作,返回-100的问题
- 字符串比较问题?
- 我已经忙了一星期了,还没搞定,帮帮忙吧!!!!!
- sql2000下,bcp导出文件不能导到网络路径下吗?请高人指点啊
- 在存储过程中使用waitfor和go,目的是要周期性地执行一段代码.如何让该存储过程在数据库系统启动时就被正确地调用?
Nokia 7610 2 10 5 7
Nokia 6110 3 5 4 4
Moto A1200 5 4 1 8
Moto V3i 6 4 2 日报表: 进货/销售 的时候对 进货/销售,期末数量进行修改
感觉用触发器比较好;二、另外这种系统一般设置有月结功能,主要目的是什么?怎么实现?主要目的是: 更正期初(一个周期改一次),
实现: 月结的时候,用期末去修改期初,表示一个周期的完成
http://topic.csdn.net/u/20080227/14/8bce0844-bd15-42f0-9cda-a343d5d6601b.html