日期:2014-05-17  浏览次数:20377 次

请教一个统计报表的sql serve 语句 谢谢大家帮助!
create table 部门表
(
  部门编号 varchar(4),
  部门名称 varchar(20),
  部门类别 varchar(20)
)
insert into 部门表 select '01 ', 'a营业部 ',null
insert into 部门表 select '0101 ', 'a1营业厅 ', '自有厅 '
insert into 部门表 select '0102 ', 'a2营业厅 ', '自有厅 '
insert into 部门表 select '0103 ', 'b1营业厅 ', '合作厅 '
insert into 部门表 select '0104 ', 'b2营业厅 ', '合作厅 '
insert into 部门表 select '0104 ', 'b3营业厅 ', '合作厅 '

--------------------------------
create table 收费表
(

项目名称 varchar(20),
当日营业款 decimal(13,2),
日期 datetime,
所属部门 varchar(20)
)
insert into 收费表 select '合作厅营业款 ',10000, '2012-1-1 ', 'b1营业厅 '
insert into 收费表 select '合作厅营业款 ',20000, '2012-1-1 ', 'b2营业厅 '
insert into 收费表 select '合作厅营业款 ',15000, '2012-1-2 ', 'b1营业厅 '
insert into 收费表 select '合作厅营业款 ',30000, '2012-1-2 ', 'b2营业厅 '

----------------------------------

create table 押金表
(
合作厅名称 varchar(20),
押金金额 decimal(13,2),
交款日期 datetime,
补交押金金额 decimal(13,2),
退还押金金额 decimal(13,2)
)
insert into 押金表 select 'b1营业厅 ',1000, '2012-1-1 ',500,300
insert into 押金表 select 'b2营业厅 ',2000, '2012-1-1 ',1000,600
insert into 押金表 select 'b1营业厅 ',3000, '2012-1-2 ',1500,400
insert into 押金表 select 'b2营业厅 ',4000, '2012-1-2 ',2000,800
--------------------------------------
/*
要生成的报表格式为:(按照收费表的日期区间范围进行统计,例如统计2012-1-1到2012-1-2这2天的数据)
合作厅名称 押金余额 总收费额 日平均收费额 差额
b1营业厅 5300 25000 12500 7200
b2营业厅 7600 50000 25000 17400
b3营业厅 0 0 0 0
*/
drop table 部门表
drop table 收费表
drop table 押金表
/*
报表数据说明:

合作厅名称:指部门表中所有类别为“合作厅”的营业厅
押金余额=指押金表中的“押金金额+补交押金金额-退还押金金额”注意:这里的押金余额是累加的,即2012-1-2的余额=2012-1-1的余额+2012-1-2的余额
总收费额=收费表中2012-1-1到2012-1-2时间段内,每个合作厅当日营业款的总和
日平均收费额=总收费额/2012-1-1到2012-1-2之间的天数(按照收费表的日期范围进行统计)
差额=日平均收费额-押金余额

------------------------
如果对应部门表里的合作厅没有费用产生,请将报表中各种费用设置为0.00
*/

------解决方案--------------------
奇怪,咋没人帮你呢?等下我回复了就一串人来我抽时间看看,不保证,有人回复你就结贴吧....