Sql Insert into select 創建臨時表插入自增列


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM