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

疑惑····分不多,求帮助
USE DP6_Philips
GO

ALTER PROCEDURE [dbo].[SSRS_Email_memberSwork_week_1]
    (
      @CorpId INT ,
      @RegionIdParam VARCHAR(20) ,
      @FilialeIdParam VARCHAR(20) ,
      @AgentIdParam VARCHAR(20)      
    )
AS 
    BEGIN     
     DECLARE
      @BEGIN DATETIME ,  -- 数据提取开始时间
  @END DATETIME  -- 数据提取结束时间
-- 自动推算上周时间
        SELECT  @BEGIN = DATEADD(DD , -6 , CAST(value AS DATETIME)) 
, @END = CAST(value AS DATETIME) + 1
FROM DBO.DropDownListDate_New(1,1,GETDATE())
PRINT  CONVERT(VARCHAR(100),@BEGIN ,120)
PRINT CONVERT(VARCHAR(100),@END ,120)     
 --表1应报数的驻场名单
  CREATE TABLE #a(JoinTime DATETIME,CorpId INT,MemberId INT,UserName VARCHAR(50),RoleId INT)
  INSERT INTO #a
SELECT DISTINCT CAST(a.JoinTime AS DATE)
,a.CorpId
,a.MemberId
,b.UserName
,a.RoleId
FROM
dbo.DP_MembersStatusEveryDay a 
-- 获取会员姓名 并 剔除测试账号
INNER JOIN dbo.DP_MemberInfo_View b 
ON a.CorpId = b.CorpId AND a.MemberId = b.MemberId 
AND b.UserName NOT LIKE '%测试%' AND b.IsDefault = 1
WHERE a.CorpId = @CorpId
AND a.JoinTime >= @BEGIN 
AND a.JoinTime < @END
AND a.Status = 2
--------------------------------------------
CREATE TABLE #c(JoinTime DATETIME,Instruction VARCHAR(30),MemberId INT)
insert INTO #c
SELECT #a.JoinTime,e.Instruction , COUNT(DISTINCT #a.MemberId)
FROM #a 
INNER JOIN ( 
SELECT DISTINCT d.CorpId ,d.MemberId,CAST(d.RecvTime AS DATE)reportDate,d.Instruction
FROM 
dbo.DP_CommonSmsEntries d
WHERE d.CORPID = @CorpId AND d.Instruction IN ('PI','PL','PP','PM','PN')
AND d.RecvTime >= @BEGIN AND d.RecvTime < @END
)e ON #a.CorpId = e.CorpId AND #a.MemberId = e.MemberId AND CAST(#a.JoinTime AS DATE) = e.reportDate
GROUP BY #a.JoinTime,e.Instruction
SELECT * FROM #c
-------------------休假---------------------------
  CREATE TABLE #b(JoinTime DATETIME,CorpId INT,MemberId INT,UserName VARCHAR(50),RoleId INT)
  INSERT INTO #b
SELECT DISTINCT CAST(j.JoinTime AS DATE)reportDate
,j.CorpId
,j.MemberId
,MV.UserName
,j.RoleId
FROM
dbo.DP_MembersStatusEveryDay j 
-- 休假
INNER JOIN dbo.DP_SysAttendanceEntries c ON j.CorpId = c.CorpId 
AND j.MemberId = c.MemberId
AND CAST(j.JoinTime AS DATE) = CAST(c.AttendDate AS DATE)AND TypeId = 2
-- 获取会员姓名