说明:本系统把宿舍管理融合为一体系统处理:宿舍安排,水电费计算,宿舍管理可根据实际情况调配人员,很直观。最主要的是水电运算:刚开始考察的结果----按每间宿舍每月计算水电,不管是本月离职的,还是刚搬进的,还是月间调到其它宿舍的,都得要考虑计算进去,人工计算的时候,他们一般以10天为一个运算单位,这就是实际情况。我经过思考:首先计算出每间宿舍只要在这里住过的员工,不管是刚搬进的,还是离职搬出的,住过的天数。这样,得到每间宿舍的一个基数:即每间宿舍所有员工住宿的天数,再用水电总费用除以基数得出每天的平均基数,每个人的住宿天数和平均基数相乘就可以得出每人的水电费。
2009、3 龚德权
主要数据库脚本代码:计算每月员工住宿的天数
declare
@Param1 varchar(20)
set @Param1='2009-03'
select 入住人,NAME,GENDER,部门,TITLE,离职,宿舍编号,宿舍床号,宿舍性质,搬入时间,搬出时间,a.备注,时间段
,本月天数
,(case when 本月天数<=时间段 then 本月天数
when 本月天数>时间段 then 时间段
end) 住宿天数,@Param1 as 年月
from (SELECT 宿舍编号,宿舍床号,宿舍性质,入住人,搬入时间,搬出时间,备注,
datediff(dd,
(case when 搬入时间<=cast(@Param1+'-01' as datetime) then cast(@Param1+'-01' as datetime)
when 搬入时间>cast(@Param1+'-01' as datetime) then 搬入时间
end),搬出时间) as 时间段,
datename(dd,dateadd(dd,-1,dateadd(mm,1,cast(@Param1+'-01' as datetime)))) as 本月天数
FROM [kaoqing].[dbo].[宿舍日志] where 年月=@Param1
union all
SELECT 宿舍编号,宿舍床号,宿舍性质,入住人,搬入时间,搬出时间,备注,
datediff(dd,搬入时间,dateadd(dd,-1,dateadd(mm,1,cast(@Param1+'-01' as datetime)))) as 时间段,
datename(dd,dateadd(dd,-1,dateadd(mm,1,cast(@Param1+'-01' as datetime)))) as 本月天数
FROM [kaoqing].[dbo].[宿舍管理]where 入住人<>'' and 备注 not like '%中午休息%'
) a,renshi_bm where renshi_bm.BADGENUMBER=a.入住人