USE [UFDATA_999_2014]
GO
/****** Object:  StoredProcedure [dbo].[p_XMonPerNums]    Script Date: 06/12/2017 16:32:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>dEnterUnitDate
-- Description:    <Description,,>  当月在职员工统计    
-- =============================================
ALTER PROCEDURE [dbo].[p_XMonPerNums]
    
@XDate datetime
    
AS
BEGIN

    declare @NowMonFir datetime
    set @NowMonFir=convert(datetime,convert(nchar(15),YEAR(@XDate))+'-'+CONVERT(nchar(15),MONTH(@XDate))+'-01')
            
select T1.cDept_num,T1.cDepName,isnull(T2.aaa,0) as PriveMonth,isnull(T3.aaa,0) as NowMonthIn,isnull(T4.aaa,0) as NowMonthGo,(isnull(T2.aaa,0) + isnull(T3.aaa,0)  - isnull(T4.aaa,0) ) as NowMonthNum from(
(select h.cDept_num,d.cDepName from Department d join hr_hi_person h on d.cDepCode=h.cDept_num GROUP BY h.cDept_num,d.cDepName )   T1
    left join 
    (select isnull(COUNT(h.cDept_num),0) as aaa,h.cDept_num from hr_hi_person h WHERE dEnterUnitDate <@NowMonFir AND (dLeaveDate is NULL OR dLeaveDate>=@NowMonFir) GROUP BY cDept_num ) T2 
    on T1.cDept_num=T2.cDept_num
    left JOIN 
    (select isnull(COUNT(h.cDept_num),0) as aaa,h.cDept_num from hr_hi_person h WHERE dEnterUnitDate>=@NowMonFir AND dEnterUnitDate<DATEADD(MONTH,1,@NowMonFir)  GROUP BY cDept_num ) T3
    on T1.cDept_num=T3.cDept_num
    left JOIN 
    (select isnull(COUNT(h.cDept_num),0) as aaa,h.cDept_num from hr_hi_person h WHERE dLeaveDate>=@NowMonFir AND dLeaveDate<DATEADD(MONTH,1,@NowMonFir)  GROUP BY cDept_num ) T4
    on T1.cDept_num=T4.cDept_num
    
    )
    
END
当月在职员工统计

相关文章: