Sql Insert into select 创建临时表插入自增列
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 创建临时表插入自增列的更多相关文章
- oracle 实现插入自增列(类似SqlServer Identity)
oracle不像sql server 有关键字identity直接可插入数据时自增 ,Oracle是不能用Identity,可以使用Sequence Create Table Tempinfo( id ...
- SQL insert into select 语句
遇到权限数据变更的需要批量到别的平台, 在175平台添加一个权限需要, 批量到别的现有平台, 以后的建站, 会把sql放到自动建站里面; 权限的 insert into select 表一: `ous ...
- SQL Server 2008 R2——使用计算列为表创建自定义的自增列
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- SQL语句的Select部分只写必要的列
如果Select部分包含不需要的列,这会强制DB2必须进入数据页来得到所请求的特定列,这就要求更多的I/O操作.另外,如果再对这个不需要的列进行排序,就需要创建和传递一个更大的排序文件,相应地会使排序 ...
- [转]oracle 实现插入自增列
本文转自:http://blog.csdn.net/love_zt_love/article/details/7911104 刚使用oracle,它和sql server 好多地方还是有所不同的,简单 ...
- sql insert into select语句写法-将查询结果直接插入到表中
insert into month_gpcj_info(idStr,zszrmygpsl,xyzrmygpsl,mycje,mycjl,month_date,dataCompiledDate) sel ...
- SQL SERVER 使用select和union插入多条数据
insert into A(A) select '2' union select '3' union select '100' go select * from A
- SQL学习——SELECT INTO和INSERT INTO SELECT
原文链接 SELECT INTO 作用 SELECT INTO 语句从一个表中复制数据,然后将数据插入到另一个新表中. SELECT INTO 语法 我们可以把所有的列都复制到新表中: SELECT ...
- 将EXCEL中的列拼接成SQL insert插入语句
工作中经常需要将EXCEL文件中的数据导入到各种数据库,但是对于不熟悉数据库的人来说,如果直接使用命令执行导入,这无疑是一个难题,也是一个风险.这里我们直接在EXCEL文件中拼接成标准的SQL ins ...
随机推荐
- OpenCV-可视化界面Image Watch
平台:Win10 x64+vs2015专业版+opencv-3.4.1-vc14_vc15 一直觉得OpenCV在调试方面不如MATLAB灵活方便,没成想OpenCV官方早就推出了一个叫Image W ...
- Unittest中TestCase类中定义的几个特殊方法
1.setUp():每个测试方法运行前运行,测试前的初始化工作: 2.tearDown():每个测试方法运行结束后运行,测试后的清理工作: 3.setUpClass():所有的测试方法运行前运行,单元 ...
- Word中的段落
Word文档中的块级内容的最基本单位是段落,段落用<p>元素进行存储.段落定义在新行中开始,段落可以包含三方面的信息:可选的段落属性.内嵌的内容(通常为文本)和用于比较两个文档的内容的一组 ...
- Pycharm的激活码,亲测可用(20181223)
K03CHKJCFT-eyJsaWNlbnNlSWQiOiJLMDNDSEtKQ0ZUIiwibGljZW5zZWVOYW1lIjoibnNzIDEwMDEiLCJhc3NpZ25lZU5hbWUiO ...
- codeforces 1042 e
逆推期望 #include<bits/stdc++.h> using namespace std; #define ll long long #define pb(x) push_back ...
- openresty 安装
1.安装环境.版本说明: 操作系统: Centos 6.5 X86_64 openresty 版本: openresty-1.13.6.1.tar.gz 2.安装 openresty(nginx) 需 ...
- unidbgrid 设置 单元格颜色
unidbgrid 设置 单元格颜色 2018年10月24日 11:32:41 ozhy111 阅读数:68 procedure TF_Resource2.UniDBGrid1DrawColumn ...
- Android-Java-静态变量
描述Person对象: package android.java.oop09; // 描述Person对象 public class Person { private String name; pri ...
- CentOS添加明细路由
网络架构图 根据最近为客户设计的网络架构,简单的梳理一个网路架构图,当然实际上的网络架构要比这个架构图复杂的多,咱们这边只是用这个图作为一个简单的示例. 拓扑分析 我们要实现专线两端不同网段的 ...
- [转] 语音识别基本原理介绍----gmm-hmm中的embedded training (嵌入式训练)
转自:http://blog.csdn.net/wbgxx333/article/details/38986507 本文是翻译Speech and Language Processing: An in ...