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 ...
随机推荐
- JNI 记
Java Native Interface(JNI)从零开始详细教程 ================================================================ ...
- js删除map中元素
js中删除map中元素后,map的长度不变,这时需要我们自己处理 delete vacc[0]; delete vacc[1]; ClearNullArr(vacc); //清除vacc中的null值 ...
- 2018年2月19日我的java学习
2019/2/18 星期一今天学习了Java 中的面向对象思想主要学习了类 构造器等在学习修饰属性的过程中,有4点必须牢记前提是理解类的各种关系 类中有5种关系 本身 同包类 同包继承子类 不同包继承 ...
- 如何将他人的SOPC工程转换为自己可以使用的工程
上篇文章的程序源码在:http://download.csdn.net/detail/noticeable/9921952 源码错误现象: 在下载源码文件解压后,打开系统工程,可以看到quartus ...
- Python自动化开发 - RESTful API
本节内容 1. RESTful 简介 2. RESTful 设计指南 3. Django REST Framework 最佳实践 4. 理论拓展与开放平台 5. API文档化与测试 一 R ...
- 【转】vim 命令
Vim命令合集 建议直接看原文:(排版有些乱) 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接 ...
- 解决“UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 24051: illegal multibyte sequence”错误
今天我在爬取一个网页时出现了下面这个错误: UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 240 ...
- 开源播放器 ijkplayer (四) :Ijkplayer切换网络时停止播放的问题处理
问题起因: 在进行ijkplayer播放器的测试时,发现ijkplayer播放器在切换网络时出现直播画面停止的问题. 问题分析: 抓取日志发现:tv.danmaku.ijk.media.player. ...
- 仿B站项目(3)页面配置
页面配置 B站有很多页面,比如说首页啊,动画页啊,音乐页啊,舞蹈页啊,那就从首页开始. 通过观察首页,可以看见有很多模块除了内容之外,在布局颜色等方面都是一样的,所以我可以开发一些模板或者插件,到时候 ...
- linux中环境变量PATH设置错误,导致ls cd 等命令不能使用,提示:没有那个文件或目录
在CentOS7中执行了 PATH=/opt/:$PATH 然后执行ls时,出现 ls-bash: ls: 没有那个文件或目录 试了试其他命令也一样无法使用 后来执行 : export PATH=/u ...