日期:2014-05-18  浏览次数:20595 次

怎样写这些问题sql语句?
table
主表:
  dlid   日期   销售类型   部门编码   业务员编码   客户编码  
 
子表
  dlid   仓库   货物编码     数量   单价   金额

档案表:部门档案、客户档案、业务员、货物档案
每一年一个数据库,如sale_2006、sale_2007.

想查询以下结果
今年与去年相同期间销售额比较,1.可按部门、业务员、客户比较,表格如下
部门(或业务员或客户)│   2006年销售额(或2006年销售数量)│   2007年销售额(或2007年销售数量)│   增长额(增长数)│   增长百分比
2.可按部门货物、业务员货物、客户货物比较,表格如下
部门(或业务员或客户)│货物名称   2006年销售额(或2006年销售数量)│   2007年销售额(或2007年销售数量)│   增长额(增长数)│   增长百分比
3.     第1点与2点可按去年全年销售额大小排序,第2点可按先按部门\业务员\客户的增长额降序,再按货物增长额降序.

怎样写这些视图,或用存储过程,能使前台程序VB编程调用时快速方便,请各位高手相助,先谢谢!!

------解决方案--------------------
--用视图吧方便点
create view vDept2006
as
select
a.部门编码,
a.部门名称,
销售数量=sum(b.数量),
销售额=sum(b.单价*金额)
from 部门表 a
left join sale_2006.dbo.主表 b
on a.部门编码=b.部门编码
left join sale_2006.dbo.子表 c
on a.dlid=c.dlid
--这里不用where 日期=2006之类的了吧,2006年的库应该只有2006年的数据吧
group by a.部门编码,a.部门名称
go
------解决方案--------------------
--笔误,应该是sum(c.xxx)
create view vDept2006
as
select
a.部门编码,
a.部门名称,
销售数量=sum(c.数量),
销售额=sum(c.单价*金额)
from 部门表 a
left join sale_2006.dbo.主表 b
on a.部门编码=b.部门编码
left join sale_2006.dbo.子表 c
on a.dlid=c.dlid
--这里不用where 日期=2006之类的了吧,2006年的库应该只有2006年的数据吧
group by a.部门编码,a.部门名称
go