USE []
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

Sql Insert into select 创建临时表插入自增列的更多相关文章

  1. oracle 实现插入自增列(类似SqlServer Identity)

    oracle不像sql server 有关键字identity直接可插入数据时自增 ,Oracle是不能用Identity,可以使用Sequence Create Table Tempinfo( id ...

  2. SQL insert into select 语句

    遇到权限数据变更的需要批量到别的平台, 在175平台添加一个权限需要, 批量到别的现有平台, 以后的建站, 会把sql放到自动建站里面; 权限的 insert into select 表一: `ous ...

  3. SQL Server 2008 R2——使用计算列为表创建自定义的自增列

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮 ...

  4. SQL语句的Select部分只写必要的列

    如果Select部分包含不需要的列,这会强制DB2必须进入数据页来得到所请求的特定列,这就要求更多的I/O操作.另外,如果再对这个不需要的列进行排序,就需要创建和传递一个更大的排序文件,相应地会使排序 ...

  5. [转]oracle 实现插入自增列

    本文转自:http://blog.csdn.net/love_zt_love/article/details/7911104 刚使用oracle,它和sql server 好多地方还是有所不同的,简单 ...

  6. sql insert into select语句写法-将查询结果直接插入到表中

    insert into month_gpcj_info(idStr,zszrmygpsl,xyzrmygpsl,mycje,mycjl,month_date,dataCompiledDate) sel ...

  7. SQL SERVER 使用select和union插入多条数据

    insert into A(A) select '2' union select '3' union select '100' go select * from A

  8. SQL学习——SELECT INTO和INSERT INTO SELECT

    原文链接 SELECT INTO 作用 SELECT INTO 语句从一个表中复制数据,然后将数据插入到另一个新表中. SELECT INTO 语法 我们可以把所有的列都复制到新表中: SELECT ...

  9. 将EXCEL中的列拼接成SQL insert插入语句

    工作中经常需要将EXCEL文件中的数据导入到各种数据库,但是对于不熟悉数据库的人来说,如果直接使用命令执行导入,这无疑是一个难题,也是一个风险.这里我们直接在EXCEL文件中拼接成标准的SQL ins ...

随机推荐

  1. Navicat导入.xls等文件失败

    一.问题 在学习django的models时,使用Navicat premium导入.xls数据的时候会出现导入失败的原因,即使是换成了csv文件也是失败的,原因是数据库的表有外键,而需要设置外键限制 ...

  2. HTTP1.1协议-RFC2616-中文版

    转自:http://www.cnblogs.com/k1988/archive/2010/01/12/2165683.html 说明 本文档规定了互联网社区的标准组协议,并需要讨论和建议以便更加完善. ...

  3. 2019.02.16 spoj Query on a tree IV(链分治)

    传送门 题意简述: 捉迷藏强化版(带有边权,可以为负数) 思路:好吧这次我们不用点分树,我们用听起来更屌的链分治. 直接把树剖成若干条重链,这样保证从任意一个点跳到根节点是不会跳超过logloglog ...

  4. abaqus查询网格相关

    怎样查询网格中总共有多少单元和节点: 可以进入mesh模块----tools----query----mesh----下面选择select elements----选中所有单元----鼠标中键就可以显 ...

  5. datatable实例教程

    网站的后台,多数是需要使用datatable来展示数据的,因为datatable的功能比较强大,可以更好的使用. 引用css <link href="../../static/asse ...

  6. 推荐使用OpenLiveWriter在cnblogs上写的Blog

    这是我第一个使用OpenLiveWriter在cnblogs上写的Blog.不知道效果如何,但又很多功能我可以采用! 如表格功能:   Open Live Writer Write  on Web 优 ...

  7. bash编程-cut、printf

    1. cut cut命令用于从行中截取字符串. SYNOPSIS cut OPTION... [FILE]... ** OPTION** -d CHAR:以指定的字符为分隔符(不要用空格作为分隔符): ...

  8. 4.ASP.NET MVC 5.0 视图之模型绑定

    大家好,这篇文章,我将向大家介绍ASP.NET MVC的模型视图绑定,ASP.MVC的模型绑定分为两种:一种是动态绑定[Dynamic Binding];还有一种就是强类型绑定[Strongly ty ...

  9. web开发之菜鸟的代码规范

    笔者菜鸟里最不会飞的那个,所以这些基础的习惯都没养成,正好抽时间特意做个笔记以方便自己规范代码, 有兴趣的大佬多多指点. 养成好的编码习惯收益良多, 总结下编码时应注意的细节<借鉴高程里代码约束 ...

  10. 第三篇: 服务消费者(Feign)

    本文根据https://blog.csdn.net/forezp/article/details/81040965写出,修正了部分瑕疵,在此对那位博主表示感谢. 上一篇文章讲述通过RestTempla ...