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. Linux 下查看我们的不速之客

    我们通过下面这个命令,可以查看 VPS 上还有谁在登陆: w 输出类似下列信息: 23:20:00 up 960 days, 4:29, 2 user, load average: 0.05, 0.0 ...

  2. JS 的execCommand 方法 做的一个简单富文本

    execCommand 当一个 HTML 文档切换到设计模式(designMode)时,文档对象暴露 execCommand 方法,该方法允许运行命令来操纵可编辑区域的内容.大多数命令影响文档的选择( ...

  3. linux下设置计划任务执行python脚本

    linux下设置计划任务执行python脚本 简介 crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自 ...

  4. android-基础编程-ScrollView

    滚动视图(ScrollView)是指当拥有很多内容,屏幕显示不完时,需要通过滚动来显示完整的视图.包括水平滚动视图(HorizontalScrollView)和垂直滚动视图(ScrollView) 基 ...

  5. js 基本

    JavaScrip组成:1.ECMAScrip --核心2.DOM 文档对象模型3.BOOM 浏览器对象模型 JavaScrip写法分类:1.内联式写在标签内以属性为表现:2.内嵌式以script标签 ...

  6. Django Template 进阶

    回顾: Variables {{ var }} {{ dict.key }} {{ var.attr }} {{ var.method }} {{ varindex }} Filter {{ list ...

  7. PHP画图的基本步骤GD库

    一:PHP新建一个图片步骤: :创建画布: $im=imagecreatetruecolor(300,80) 2:定义颜色: $black=imagecolorallocate($im, 0, 0, ...

  8. python 开发环境配置

    上篇文章配置了虚机基础环境,本篇文章介绍配置python开发环境 配置YUM源 使用国内yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos ...

  9. [Leetcode]59.螺旋矩阵Ⅱ

    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, ...

  10. 百度Ueditor富文本编辑器 .net版本 任意文件上传执行漏掉修复

    问题描述: 借由上传网络图片功能中可传递可执行文件.后台代码中只做了文件类型的检测未能正确的拦截掉非法文件. 只需将上传地址改为 XXXXXX.jpg?.aspx最终服务上最终存储的文件会变为XXXX ...