USE [20151102] GO ============================================= -- Author: PPL -- Create date: 2015-11-23 -- Description: 獲取列表數據分析 -- ============================================= ALTER Procedure [dbo].[P_GetPayDetailedStatisProvinces] ( @beginTime VARCHAR(50), --激活開始時間 @endTime VARCHAR(50) --激活結束時間 ) AS BEGIN DECLARE @Where nVARCHAR(3000); --where 條件 DECLARE @Sql NVARCHAR(3000); --sql set @Where=' where 1=1 ' --檢查臨時表是否存在,否則刪除臨時表 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#temptable]') AND type in (N'U')) BEGIN DROP TABLE [dbo].[#tmpOnlineRefundNumber] DROP TABLE [dbo].[#tmpOnlineRefundNumber] DROP TABLE [dbo].[#tmpOnlinTeachingNumber] DROP TABLE [dbo].[#tmpLinePayNumber] DROP TABLE [dbo].[#tmpLineRefundNumber] DROP TABLE [dbo].[#tmpLineTeachingNumber] END --創建臨時表省份 CREATE TABLE #tmpProvince( Id INT IDENTITY (1,1) not NULL PRIMARY KEY,--創建列id,自動增長 Code VARCHAR(20) -- ProvinceCode 省Code ) --創建臨時表線上繳費人數 CREATE TABLE #tmpOnlinPpayNumber( Province VARCHAR(20), -- ProvinceCode 省Code OnlinPpayNumber INT -- 線上繳費人數 ) --創建臨時表線上退費人數 CREATE TABLE #tmpOnlineRefundNumber( Province VARCHAR(20), -- ProvinceCode 省Code OnlineRefundNumber INT -- 線上退費人數 ) --創建臨時表線上教材數 CREATE TABLE #tmpOnlinTeachingNumber( Province VARCHAR(20), -- ProvinceCode 省Code OnlinTeachingNumber INT -- 線上教材數 ) --創建臨時表線下繳費人數 CREATE TABLE #tmpLinePayNumber( Province VARCHAR(20), -- ProvinceCode 省Code LinePayNumber INT -- 線下繳費人數 ) --創建臨時表線下退費人數 CREATE TABLE #tmpLineRefundNumber( Province VARCHAR(20), -- ProvinceCode 省Code LineRefundNumber INT -- 線下退費人數 ) --創建臨時表線下教材數 CREATE TABLE #tmpLineTeachingNumber( Province VARCHAR(20), -- ProvinceCode 省Code LineTeachingNumber INT -- 線下教材數 ) --報名開始時間 IF(@beginTime!='') BEGIN SET @Where+=' AND CONVERT(varchar(100), c_project.OpenTime, 23)>=''' + @beginTime + ''' '; END --報名結束時間 IF(@endTime!='') BEGIN SET @Where+=' AND CONVERT(varchar(100), c_project.OpenTime, 23)<=''' + @endTime + ''' '; END --省份 SET @Sql ='select Province FROM c_project where province is not null GROUP BY Province' INSERT INTO #tmpProvince EXEC(@Sql) --線上繳費人數 SET @Sql =' SELECT Province,COUNT(c_project.OpenTime)as OnlinPpayNumber from c_project ' + @Where + ' AND workid<3 and c_project.province is not null and c_project.DepartCode is not null and (PaySource=1 OR PaySource=2 OR PaySource=4 ) AND ispay= 1 GROUP BY Province' INSERT INTO #tmpOnlinPpayNumber EXEC(@Sql) PRINT @Sql --線上退費人數 SET @Sql ='SELECT Province,0 as tuifei from c_project '+@Where+' AND ispay= 1 GROUP BY Province' INSERT INTO #tmpOnlineRefundNumber EXEC(@Sql) --線上教材數 SET @Sql ='SELECT Province,COUNT(c_project.OpenTime)as countUsername from c_project join o_LineItem ON c_project.id =o_LineItem.ProjectId ' + @Where + ' AND c_project.workid<3 and c_project.province is not null and c_project.DepartCode is not null and (PaySource=1 OR PaySource=2 OR PaySource=4 ) AND o_LineItem.BookCost!=0 AND ispay= 1 GROUP BY Province' INSERT INTO #tmpOnlinTeachingNumber EXEC(@Sql) --線下繳費人數 SET @Sql =' SELECT Province,COUNT(c_project.OpenTime)as username from c_project '+@Where+' AND c_project.workid<3 and c_project.province is not null and c_project.DepartCode is not null and (PaySource=0 OR PaySource=3 ) AND ispay= 1 GROUP BY Province' INSERT INTO #tmpLinePayNumber EXEC(@Sql) --線下退費人數 SET @Sql ='SELECT Province,0 as tuifei from c_project '+@Where+' AND c_project.workid<3 AND ispay= 1 GROUP BY Province' INSERT INTO #tmpLineRefundNumber EXEC(@Sql) --線下教材數 SET @Sql ='SELECT Province,COUNT(c_project.OpenTime)as username from c_project join o_LineItem ON c_project.id= o_LineItem.ProjectId ' + @Where + ' AND c_project.workid<3 and c_project.province is not null and c_project.DepartCode is not null and (PaySource=0 OR PaySource=3) AND o_LineItem.BookCost!=0 AND ispay= 1 GROUP BY Province ' INSERT INTO #tmpLineTeachingNumber EXEC(@Sql) print (1) select t1.Id,t1.Code,ISNULL(t2.OnlinPpayNumber,0)AS OnlinPpayNumber,ISNULL(t3.OnlineRefundNumber,0) as OnlineRefundNumber,ISNULL(t4.OnlinTeachingNumber,0) OnlinTeachingNumber,ISNULL(t5.LinePayNumber,0) LinePayNumber,ISNULL(t6.LineRefundNumber,0) LineRefundNumber,ISNULL(t7.LineTeachingNumber,0) LineTeachingNumber FROM #tmpProvince as t1 left join #tmpOnlinPpayNumber as t2 on t2.Province=t1.Code left join #tmpOnlineRefundNumber as t3 on t3.Province=t1.Code left join #tmpOnlinTeachingNumber as t4 on t4.Province=t1.Code left join #tmpLinePayNumber as t5 on t5.Province=t1.Code left join #tmpLineRefundNumber as t6 on t6.Province=t1.Code left join #tmpLineTeachingNumber as t7 on t7.Province=t1.Code order by t5.LinePayNumber desc --檢查臨時表是否存在,否則刪除臨時表 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#temptable]') AND type in (N'U')) BEGIN DROP TABLE [dbo].[#tmpOnlinPpayNumber] DROP TABLE [dbo].[#tmpOnlineRefundNumber] DROP TABLE [dbo].[#tmpOnlinTeachingNumber] DROP TABLE [dbo].[#tmpLinePayNumber] DROP TABLE [dbo].[#tmpOnlineRefundNumber] END END GO
