sqlserver怎么建临时表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver怎么建临时表?相关的知识,希望对你有一定的参考价值。

declare @sql varchar(2000)declare @lie varchar(2000)set @sql=''set @lie=''select @sql=@sql+',case when sum(case when pzmc='''+pzmc+''' then sl end) is null then 0 else sum(case when pzmc='''+pzmc+''' then sl end) end as ['+pzmc+']'from Z_YidaiZajiaozhongShengchan  where nian='2008' and jidu='春' and shsftg='通过' group by pzmcselect @lie=@lie+'+case when sum(case when pzmc='''+pzmc+''' then sl end) is null then 0 else sum(case when pzmc='''+pzmc+''' then sl end) end'from Z_YidaiZajiaozhongShengchan  where nian='2008' and jidu='春' and shsftg='通过' group by pzmcexec ('select case when (grouping(tbdw)=1) then ''合计'' else tbdw end as 场别 '+@sql+','+@lie+' as 合计 from Z_YidaiZajiaozhongShengchan where nian=''2008'' and jidu=''春'' and shsftg=''通过'' group by tbdw with rollup') 我想把上面查询出来的结果建成一个临时表或者是视图,应该怎么建啊?

表名前使用一个#号,临时表是局部的,使用两个#号,临时表是全局的,在断开连接后sql会自动删除临时表
create table #a
(
id int,
name varchar(50)
)
insert into #a(id,name) values(1,'123')
select * from #a
drop table #a
临时表除了名称前多了#号外,其他操作与普通表完全一样。
tb_Student是已建立好的表,我们通过临时表temp把tb_Student表中的内容复制到tb_lizi表中,可以使用如下的代码实现:
use mcf
SELECT * INTO #temp FROM tb_Student
SELECT * INTO tb_lizi FROM #temp
执行后断开sql连接并重新连接(也可以退出sq再l重新启动sql),发现tb_lizi表中的内容tb_Student表中的内容完全一致,实现了复制,同时我们没有用代码删除temp表,但mcf数据库中却没有temp表了,这是因为断开连接时sql自动删除了temp表
参考技术A

1、表名前使用一个#号,临时表是局部的,使用两个#号,临时表是全局的,在断开连接后sql会自动删除临时表

2、临时表除了名称前多了#号外,其他操作与普通表完全一样。

3、tb_Student是已建立好的表,我们通过临时表temp把tb_Student表中的内容复制到tb_lizi表中,可以使用如下的代码实现:
use mcf
SELECT * INTO  #temp FROM tb_Student
SELECT * INTO  tb_lizi FROM #temp
执行后断开sql连接并重新连接(也可以退出sq再l重新启动sql),发现tb_lizi表中的内容tb_Student表中的内容完全一致,实现了复制,同时我们没有用代码删除temp表,但mcf数据库中却没有temp表了,这是因为断开连接时sql自动删除了temp表

简介:

SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。

Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。

参考技术B 创建临时表
方法一:
create table #临时表名(字段1 约束条件,
字段2 约束条件,
.....)
create table ##临时表名(字段1 约束条件,
字段2 约束条件,
.....)
方法二:
select * into #临时表名 from 你的表;
select * into ##临时表名 from 你的表;
注:以上的#代表局部临时表,##代表全局临时表

查询临时表
select * from #临时表名;
select * from ##临时表名;

删除临时表
drop table #临时表名;
drop table ##临时表名;
参考技术C Oracle创建临时表的语法如下:

CREATE GLOBAL TEMPORARY TABLE table
"(" column datatype [DEFAULT expr] [ NULL | NOT NULL]
[, column datatype [DEFAULT expr] [ NULL | NOT NULL ]... ")"
ON COMMIT DELETE | PRESERVE ROWS ;

在Oracle中,可以创建以下两种临时表:

  1) 会话特有的临时表

  CREATE GLOBAL TEMPORARY ( )

  ON COMMIT PRESERVE ROWS;

  2) 事务特有的临时表

  CREATE GLOBAL TEMPORARY ( )

  ON COMMIT DELETE ROWS;

  CREATE GLOBAL TEMPORARY TABLE MyTempTable
参考技术D 语法是:
create table #tableName("这里就是和正常表一样")
临时表主要的语法区别是: 表名前面是: #。
临时表的特点是:
只对当前连接有效,其他的连接是不能访问的。且表是保存的tempdb数据库中的,

使用SqlBulkCopy 从sybase复制表到sqlserver中遇到重复的数据怎么办? 能不能设置什,跳过该次插入

不能动用两边的数据库的情况下操作

参考技术A 思路是这样:用sql语句在数据库先建一个空的临时表,例如#temp,再用SqlBulkCopy 复制到数据库的#temp,然后用sql 语句将#temp与目标表的差集插入到目标表,最后将临时表删除掉。 参考技术B 重建唯一索引指定 ignore_dup_key =on 试试追问

谢谢 在不能动用两边的数据库的情况下,有没有呢?

追答

你可以先用alter 修改索引的ignore_dup_key =on,导入完成後再修改回去应该不会有什麼影响吧
或者只能先导入一个临时使用的表,再从临时表导入正式表也可以。
还有就是编辑文件删除重复数据了

追问

不行那两个数据都是客户的 不能修改的

追答

那就只能修改导出的文件了

以上是关于sqlserver怎么建临时表?的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver怎么建临时表?

oracle 怎么在存储过程中创建一个临时表,在里面插入数据,再查找这个临时表的所有数据,最后drop这个表。

关于sqlserver临时表的问题,请教高手!

在 SQL Server 中创建临时表是不是需要使用#?

InMemory:在内存中创建临时表和表变量

Oracle存储过程创建临时表,插入数据后,怎么返回临时表数据,并在asp.net中接收到datatable中