假设有如下两个表,表一是销售记录, 表二是所有商品
表一:
商品名称 购买数量 购买时间
--------------------------
麻花 10 2006-07-21 00:00:00
棉花糖 1 2007-01-21 00:00:00
小花片 2 2007-02-21 00:00:00
白菜 21 2007-03-21 00:00:00
麻花 20 2007-04-21 00:00:00
棉花糖 18 2007-05-21 00:00:00
小花片 23 2007-06-21 00:00:00
白菜 29 2007-07-21 00:00:00
麻花 102 2007-08-21 00:00:00
棉花糖 13 2007-09-21 00:00:00
小花片 29 2007-10-21 00:00:00
白菜 45 2007-11-21 00:00:00
表二:
商品名称 最近365天销售数量
-------------------------
麻花 122
棉花糖 24
小花片 54
白菜 95
我要怎么做才能从表一中查出今天往前推365天(也就是最近一年)的销售量并更新表二?
本来我是想靠编程, 根据表二一条一条查询表一再来更新, 可是这样效率太低了.
请高人指教~谢谢各位达人...
------解决方案--------------------
- SQL code
select * into #temp from (select 商品名称,sum(购买数量)总数量 from 表一 where datediff(dd,b.购买时间,getdate())<=365 group by 商品名称)aupdate 表二 set 最近365天销售数量=b.总数量 from 表二 a,#temp bwhere a.商品名称=b.商品名称
------解决方案--------------------
- SQL code
update 表二set 最近365天销售数量 = n.购买数量from 表二 m , (select 商品名称 , 购买数量 = sum(购买数量) from 表一 where datediff(day , 购买时间 , getdate()) <= 365 group by 商品名称) nwhere m.商品名称 = n.商品名称
------解决方案--------------------
- SQL code
--不用临时表update 表二 set 最近365天销售数量=(select sum(购买数量) from 表一 where 商品名称=b.商品名称 and 购买时间>=dateadd(day,-365,getdate()) and 购买时间<getdate())from 表二 a
------解决方案--------------------
update 表二
set 最近365天销售数量 = n.购买数量
from 表二 m , (select 商品名称 , 购买数量 = sum(购买数量) from 表一 where datediff(day , 购买时间 , getdate()) <= 365 group by 商品名称) n
where m.商品名称 = n.商品名称