储存过程中使用临时表

declare @areaCode varchar(10)   
 declare @CreditType Varchar(20)   
 set @areaCode='' 
 --资质等级 
 set @CreditType='KFCreditLevel' 
 if(@ApplyType='002')   
  select @CreditType='WYCreditLevel'   
 if(@ApplyType='003')   
  select @CreditType='CQCreditLevel'   
 if(@ApplyType='004')   
  select @CreditType='PGCreditLevel'   

    --注册地址开始
 declare @shift smallint    
 set @shift=len(@RegCode)   
 while(@shift>0)   
 begin   
  if(substring(@RegCode,@shift,1)<>'0')   
  break      
  set @shift=@shift -1   
 end   
 --print @shift   
   
 if(@shift>0 and (2*(@shift/2))<>@shift)   
  set @shift=@shift+1   
 if @shift>0    
  set @areaCode=substring(@RegCode,1,@shift)   
    ----注册地址结束
 declare @approveSql varchar(200)
 set @approveSql=''
 if(@ApprovePerson<>'')
  set @approveSql=' and wa.innerInstanceId=gg.innerInstanceId and gg.ApprovePerson='''+@ApprovePerson+''' and gg.ApproveTime is not null '
 declare @sql varchar(5000)   
 DECLARE @sql1 varchar(8000)
 DECLARE @sql2 varchar(8000)
 declare @whereSql varchar(2000)
 DECLARE @WhereSql1 varchar(5000)  
 --decalre
 if(@StartDate<>'' and  @EndDate='')
  set @EndDate='2050-12-01'
 if(@StartDate='' and  @EndDate<>'')
  set @StartDate='2001-01-01' 
  
 SET @WhereSql1=' Where 1=1 '
 IF(@areaCode<>'')   
  SET @WhereSql1=@WhereSql1+ ' AND pebi.RegCode like ''' + @areaCode + '%'''
 IF(@EntpCode<>'')
  SET @WhereSql1=@WhereSql1 + ' AND pebi.EntpCode=''' + @EntpCode + ''''
 IF(@EntpName<>'')   
  SET @WhereSql1=@WhereSql1 + ' AND pebi.EntpName like ''%' + @EntpName + '%'''
 IF(@ApplyLevel<>'')
  SET @WhereSql1=@WhereSql1 + ' AND weal.ApplyLevel=''' + @ApplyLevel + ''''
 IF(@StartDate<>'' and @EndDate<>'')   
  SET @whereSql1=@whereSql1 + ' AND weal.ApplyDate BETWEEN '''+@StartDate+''' AND '''+@EndDate+''''   
 
 IF(@ApplyType<>'')
  SET @WhereSql1=@WhereSql1 + ' AND weal.AptitudeType=''' + substring(@ApplyType,1,3) + '''' 
 IF(@BusiTypes<>'')   
  SET @whereSql1=@whereSql1 + ' AND weal.BusiType IN ('+@BusiTypes+')'
 IF(@ApprovePerson<>'')   
  SET @WhereSql1=@WhereSql1 + ' AND wial.ApprovePerson=''' + @ApprovePerson + ''''
 
 if(@ArriveStartDate<>'' and  @ArriveEndDate='')
  set @ArriveEndDate='2050-12-01'
 if(@ArriveStartDate='' and  @ArriveEndDate<>'')
  set @ArriveStartDate='2001-01-01'
 
 IF(@ArriveStartDate<>'' and  @ArriveEndDate<>'')   
  SET @whereSql1=@whereSql1 + ' AND wial.ApproveTime BETWEEN '''+@ArriveStartDate+''' AND '''+@ArriveEndDate+''''   
 
 IF(@BranchNo<>'')   
  SET @WhereSql1=@WhereSql1 + ' AND wial.BatchNo=''' + @BranchNo + '''' 
   
 if(@ApplyType<>'' and len(convert(varchar(5),@ApplyType))=5)   
 begin     
  if (substring(@ApplyType,4,2)='02')   
   set @WhereSql1=@WhereSql1+' and pem.EntpMode =''村镇企业'''   
  else   
   set @WhereSql1=@WhereSql1+' and isnull(pem.EntpMode,'''') <>''村镇企业'''   
 end 
  
 SET @sql1='SELECT distinct weal.WorkInstanceID into #TempWork
   FROM WWF_EntpApplyList weal
   INNER JOIN WWF_AuditLog wal ON wal.WorkInstanceID = weal.WorkInstanceID
   INNER JOIN WWF_InnerAuditLog wial ON wial.InnerInstanceID = wal.InnerInstanceID
   INNER JOIN PUB_EntpBasicInfo pebi ON pebi.EntpCode = weal.EntpCode
   INNER JOIN PUB_EntpMessage pem ON pem.EntpCode = pebi.EntpCode '
   
  
 --PRINT (@sql1+@WhereSql1)
     --EXEC( @sql1+@WhereSql1)
    
 SET @sql2=' SELECT B.WorkInstanceID,B.EntpName,B.ApplyDate,B.ArriveTime,B.EntpCode,B.ApplyLevel,
     B.ApplyName,B.ApplyPerson,B.LinkPhone,B.BusiType,B.AptitudeType,ApproveDeptName,
     B.Description,B.ApproveDept,B.AreaCode,B.Timeout,B.ApproveOpinion,B.caption,
     B.ApproveTime,B.Diffdays,B.TaskId,B.TaskName,B.innerarrivetime,B.Roles,B.ApplyItemCodes
 FROM  
 (
  SELECT pebi.EntpName,pebi.EntpCode,weal.BusiType,weal.WorkInstanceID,
    weal.ApplyDate,ApplyLevel,
    DicName as ApplyName,weal.ApplyPerson,weal.LinkPhone,weal.AptitudeType,
    wial.ArriveTime,wial.ApprovePerson,poi.OrgName AS ApproveDeptName,
    isnull(weal.Description,''审批中'') as Description,
    (case when wal.ApproveDept is null then dbo.uf_getApprovedept(wal.innerInstanceId,wal.AreaCode,pem.AuditStatus)
           else wal.ApproveDept end) as ApproveDept,
          
       wal.AreaCode,dbo.uf_getTimeSpan(wal.ArriveTime,isnull(wal.Timeout,0)) as Timeout,
       isnull(wal.ApproveOpinion,'''') as ApproveOpinion ,isnull(caption ,'''') caption ,
       wial.ApproveTime,DATEDIFF(day, getdate(),ApplyDate) AS Diffdays, wial.Remark,  
       wial.TaskId,wial.TaskName,wial.arrivetime as innerarrivetime,wial.Roles,ApplyItemCodes
  FROM WWF_EntpApplyList weal
  INNER JOIN WWF_AuditLog wal ON wal.WorkInstanceID = weal.WorkInstanceID
  INNER JOIN WWF_InnerAuditLog wial ON wial.InnerInstanceID = wal.InnerInstanceID
  INNER JOIN PUB_EntpBasicInfo pebi ON pebi.EntpCode = weal.EntpCode
  INNER JOIN PUB_EntpMessage pem ON pebi.EntpCode = pem.EntpCode
  LEFT JOIN PUB_OrganInfo poi ON poi.OrgCode=wal.ApproveDept
  LEFT JOIN PUB_PublicCode ppc ON ppc.DicCode=weal.ApplyLevel And DicType='''+@CreditType+''' 
  LEFT JOIN FW_Users fu ON fu.Login=wial.ApprovePerson
  INNER JOIN #TempWork a ON a.WorkInstanceID=weal.WorkInstanceID
 ) B
 INNER JOIN
 (  
  SELECT weal.WorkInstanceID,max(wial.ArriveTime) AS ArriveTime
  FROM WWF_EntpApplyList weal
  INNER JOIN WWF_AuditLog wal ON wal.WorkInstanceID = weal.WorkInstanceID
  INNER JOIN WWF_InnerAuditLog wial ON wial.InnerInstanceID = wal.InnerInstanceID
  INNER JOIN #TempWork a ON a.WorkInstanceID=weal.WorkInstanceID
  GROUP BY weal.WorkInstanceID
  ) C ON C.WorkInstanceID=B.WorkInstanceID AND C.ArriveTime = B.ArriveTime ORDER BY B.ArriveTime Desc'

  PRINT( @sql1+@WhereSql1+@sql2)
  EXEC( @sql1+@WhereSql1+@sql2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值