SQL Server之自动创建视图
本方法只适合特定模式的视图创建.
比如,创建需要整张表列名的视图,或者当表和需要的列名统计在一张数据表当中,如图所示:
首先要先获取要创建视图所需要的表,这里我获取的是整个数据库中的表,
- IF OBJECT_ID('tempdb..#tablename') IS NOT NULL
- BEGIN
- DROP TABLE #tablename
- END
- SELECT name,ROW_NUMBER() over (order by name) id
- INTO #tablename
- FROM [sys].[tables] AS q
这里通过Row_NUMBER()来给每一列返回一个数字ID,在下面可以通过这个ID来循环获取表名.
接着来拼接视图的名称,,名称可以通过实际的需求来.
- IF OBJECT_ID('tempdb..#viewname') IS NOT NULL
- BEGIN
- DROP TABLE #viewname
- END
- SELECT 'v_'+name AS name ,id
- INTO #viewname
- FROM #tablename
接下来就是核心的代码,之前就说过我们可以通过id来循环获取表名来创建视图,当然也可以通过这样的方法来获取列名,只不过我们要处理一下列名,将其处理成 a,b,c,d这样的格式.
- DECLARE @j INT,@i INT,@name NVARCHAR(200),@viewname NVARCHAR(200)
- SET @i=1
- SET @j=1
- DECLARE @B INT ,@A INT,@str NVARCHAR(200),@strw NVARCHAR(200),@last NVARCHAR(200)
- SET @B=1
- SET @A=1
- SET @str=''
- WHILE @j<=(select max(id) from (select name ,row_number() over (order by name) id from [sys].[tables])as q)
- BEGIN
- SELECT @name = name FROM #tablename WHERE id = @i
- SELECT @viewname=name FROM #viewname WHERE id = @i
- IF OBJECT_ID('tempdb..#str') IS NOT NULL
- BEGIN
- DROP TABLE #str
- END
- SELECT name,ROW_NUMBER() OVER(ORDER BY name) id
- INTO #str
- FROM syscolumns WHERE id = OBJECT_ID(@name) ----获取数据表中的列名
- WHILE @A<=(select max(id) from (select name ,row_number() over (order by name) id FROM syscolumns WHERE id = OBJECT_ID(@name))as q)
- BEGIN
- SELECT @strw=name from #str where id=@B
- IF @str=''
- BEGIN
- SET @str = '['+@strw+']'
- --SET @str = @strw
- END
- ELSE
- begin
- SET @str = @str+','+'['+@strw+']'
- --SET @str = @str+','+@strw
- end
- SET @B = @B+1
- SET @A = @A+1
- END
- PRINT @str
- EXEC('create view '+ @viewname +' as (select '+@str+' from ['+@name+'])')SET @i=@i+1
- SET @j=@j+1
- SET @B=1
- SET @A=1
- SET @str=''
- END
SQL Server之自动创建视图的更多相关文章
- SQL Server 2008如何创建定期自动备份任务
我们知道,利用SQL Server 2008数据库可以实现数据库的定期自动备份.方法是用SQL SERVER 2008自带的维护计划创建一个计划对数据库进行备份,下面我们将SQL SERVER 200 ...
- SQL Server镜像自动生成脚本
SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...
- SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享
SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享 第一步建库和建表 USE [master] GO CREATE DATABASE [MonitorElapsedHighSQL] G ...
- SQL Server定时自动抓取耗时SQL并归档数据脚本分享
原文:SQL Server定时自动抓取耗时SQL并归档数据脚本分享 SQL Server定时自动抓取耗时SQL并归档数据脚本分享 第一步建库 USE [master] GO CREATE DATABA ...
- SQL Server 2012 自动增长列,值跳跃问题
介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(in ...
- SQL Server索引 - 索引(物化)视图 <第九篇>
一.索引视图基本概念 索引视图实际上是一种将一组唯一值“物化”为群集索引形式的视图,所为物化就是几乎和表一样,其数据也是会存储一份的(会占用硬盘空间,但是查询速度快,例如可以将count(),sum( ...
- 使用SQL Server Management Studio 创建作业备份数据库
在项目中,经常需要备份数据库,如果能做到只需点个按钮(“开始备份数据库”按钮),然后什么都不管,数据库就自动备份好了,或者服务器上的数据库隔一段时间自动备份一次,那该多好啊. Sql server 的 ...
- sql server中如何修改视图中的数据?
sql server中如何修改视图中的数据? 我做个测试,视图的数据有标记字段时,如果是这种方式(0 as FlagState),是无法修改的 --创建视图语句 --- create view V_E ...
- 利用Microsoft Sql Server Management studio 创建数据库的示例
利用Microsoft Sql Server Management studio 创建数据库的示例方法如下: 一.打开安装好的Microsoft Sql Server Management stu ...
随机推荐
- Python:爬取全国各省疫情数据并在地图显示
代码: import requests import pymysql import json from pyecharts import options as opts from pyecharts. ...
- 使用Object.Defineproperties改变对象数据结构
此方法设置键的时候如果需要使键为变量则需要加中括号[] 如下 let addKeys = Number(keys[keys.length - 1]) + 1 Object.assign(this.t ...
- 通过一段代码理解es6继承;
class animal{ constructor(props){ this.name = 'xiaoniao' || props.name } eat(){ console.log(this.nam ...
- Java 实例 - 读取文件内容
原文作者:菜鸟教程 原文链接:Java 实例 - 读取文件内容(建议前往原文以获得最佳体验) 按行读取文本文件 import java.io.*; public class Main { public ...
- 基于Spring接口,集成Caffeine+Redis两级缓存
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 在上一篇文章Redis+Caffeine两级缓存,让访问速度纵享丝滑中,我们介绍了3种整合Caffeine和Redis作为两级缓存使用的方法,虽 ...
- SSM实现个人博客-day03
项目源码免费下载:SSM实现个人博客 有问题请循环vx:kht808 3.相关包与实体类的创建 1.包名与路径如下: 2.实体类的编写 Blog类 public class Blog implemen ...
- 内网穿透NPS
内网穿透实现 nps文档 https://ehang-io.github.io/nps/#/install nps docker镜像 https://hub.docker.com/r/ffdfgdfg ...
- JavaScript学习总结1-字符、数字
1.严格检查模式 JavaScript是一种十分随便自由的语言 1 <script> 2 console.log(i); 3 </script> 即使没有定义i变量,也能在控制 ...
- 读完学会shell语法,shell脚本80%已经学会
第3章 shell语法讲解 3.1 shell运算讲解 3.1.1 运算符的讲解 3.1.2 shell运算方式的讲解 3.1.2.1 $(())运算 [root@m01 test_init] # a ...
- IoT平台如何实现业务配置中心
摘要:本文讲述业务配置中心(下文简述为配置中心)的关键技术和实现方式. 本文分享自华为云社区<手把手教你物联网平台如何实现业务配置中心>,作者: 华为云IoT专家团 . 上一篇<华为 ...