对sql server 一些操作方法

本文介绍了在SQL Server中处理统计数据的方法,包括创建存储过程`sp_SelectEfficiency`来查询员工工作效率,以及处理单个字段数据的存储过程`sp_ChuliTel`。此外,还涉及到触发器`trg_tblCheckedPersonInfo`的应用,用于自动检查来电信息的完整性与一致性。
摘要由CSDN通过智能技术生成

1.在数据库处理统计数据 刚开始是在数据库处理的,后来发现在业务层会更好些 不过还是放这以后用的着

--查询单个员工工作效率
if exists(select * from sysobjects where name='sp_SelectEfficiency')
drop proc sp_SelectEfficiency
go
create proc sp_SelectEfficiency
@CpNumber varchar(20),
@LastTime varchar(20),
@LastTime2 varchar(20)
as
begin
  select @LastTime=  convert(datetime,(convert(varchar,@LastTime)+' 00:00:00'))
  select @LastTime2=  convert(datetime,(convert(varchar,@LastTime2)+' 23:59:59'))
 declare @table table
(
 CName varchar(20),--来电姓名
 CountTime int, --来电次数
 Time2 float,  --在场时间
 Time1 float , --在途时间 
 Efficiency float --工作效率
)
 declare @xunhuan int
 select @xunhuan=count(*) from tblCheckedPersonInfo
  where 1=1
  and (CpNumber=@CpNumber or (@CpNumber is null) or len(@CpNumber)=0)
  and(LastTime between @LastTime and @LastTime2)
--  group by CpNumber
  while(@xunhuan>0)
   begin
      declare @name varchar(20) --员工姓名
      declare @Number varchar(20) --根据不同的 @xunhuan 找出其员工工号
      declare @count float  --在场时间 小时数
      declare @c int  --来电次数
      declare @countN int --在场时间 分钟数
      declare @countN2 float --工作时间
      declare @Efficiency   float --工作效率
      declare @int int
      set @int=1
     --根据不同的@xunhuan 找出对应的姓名,工号
      select @name=CpName,@Number=CpNumber
      from (
       select  CpID,CpName,CpNumber,
         (select count(*) from tblCheckedPersonInfo as e2
            where e1.CpID >= e2.CpID
            and (e2.CpNumber=@CpNumber or (@CpNumber is null) or len(@CpNumber)=0)
            and(e2.LastTime between @LastTime and @LastTime2)
          ) as rownumber
        from  tblCheckedPersonInfo as e1
         where 1=1
        and (e1.CpNumber=@CpNumber or (@CpNumber is null) or len(@CpNumber)=0)
        and(e1.LastTime between @LastTime and @LastTime2)
       ) as a
      where rownumber=@xunhuan
--首先判断这条信息是否完整 即 要有离开宾馆时间 到达工厂时间 离开工厂时间

      --根据工厂代码分组 查询在场时间和
       select @countN=sum(a.shijian) from
       (
       select FacNumber,datediff(n,min(LastTime),max(LastTime)) as shijian from tblCheckedPersonInfo
         where  1=1
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值