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. 2019.02.21 bzoj2300: [HAOI2011]防线修建(set+凸包)

    传送门 题意:动态维护凸包周长. 思路: 见这篇求面积的吧反正都是一个套路. 代码: #include<bits/stdc++.h> #define int long long #defi ...

  2. Tarjan算法(图论)(转)

    有点烦人的算法 贴个算法解析合辑先:https://blog.csdn.net/hurmishine/article/details/75248876

  3. req、js

    requests库中,可不写为headers内各键值对的部分参数:   s=requests.Session()  #或.session() s.allow_redirects=False #禁止重定 ...

  4. B树之C语言实现(包含查找、删除、插入)

    B树的定义 一棵m阶B树(Balanced Tree of order m),或为空树,或为满足下列特性对的m叉树. 树中每个结点最多含有m棵子树. 若根结点不是叶子结点,则至少有2个子树. 除根结点 ...

  5. [UWP]如何实现UWP平台最佳图片裁剪控件

    前几天我写了一个UWP图片裁剪控件ImageCropper(开源地址),自认为算是现阶段UWP社区里最好用的图片裁剪控件了,今天就来分享下我编码的过程. 为什么又要造轮子 因为开发需要,我们需要使用一 ...

  6. [转]决策树在Kaldi中如何使用

    转自:http://blog.csdn.net/chenhoujiangsir/article/details/51613144 说明:本文是kaldi主页相关内容的翻译(http://kaldi-a ...

  7. Linux pwn入门教程(1)——栈溢出基础

    作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42241-1-1.html 0×00 函数的进入与返回 要想理解栈溢出,首先必须 ...

  8. spark中RDD的transformation&action

    简介: 1,transformation是得到一个新的RDD,方式很多,比如从数据源生成一个新的RDD,从RDD生成一个新的RDD 2,action是得到一个值,或者一个结果(直接将RDDcache到 ...

  9. Java学习笔记52(网络编程:UDP协议案例)

    InetAddress类: 表示互联网中的IP地址,示例: package demo; import java.net.InetAddress; import java.net.UnknownHost ...

  10. 学爬虫,需要掌握哪些Python基础?

    入手爬虫确实不要求你精通Python编程,但基础知识还是不能忽视的,那么我们需要哪些Python基础呢? 首先我们先来看看一个最简单的爬虫流程:   第一步要确定爬取页面的链接,由于我们通常爬取的内容 ...