本方法只适合特定模式的视图创建.

比如,创建需要整张表列名的视图,或者当表和需要的列名统计在一张数据表当中,如图所示:

首先要先获取要创建视图所需要的表,这里我获取的是整个数据库中的表,

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之自动创建视图的更多相关文章

  1. SQL Server 2008如何创建定期自动备份任务

    我们知道,利用SQL Server 2008数据库可以实现数据库的定期自动备份.方法是用SQL SERVER 2008自带的维护计划创建一个计划对数据库进行备份,下面我们将SQL SERVER 200 ...

  2. SQL Server镜像自动生成脚本

    SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...

  3. SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享

    SQL Server定时自动抓取耗时SQL并归档数据发邮件脚本分享 第一步建库和建表 USE [master] GO CREATE DATABASE [MonitorElapsedHighSQL] G ...

  4. SQL Server定时自动抓取耗时SQL并归档数据脚本分享

    原文:SQL Server定时自动抓取耗时SQL并归档数据脚本分享 SQL Server定时自动抓取耗时SQL并归档数据脚本分享 第一步建库 USE [master] GO CREATE DATABA ...

  5. SQL Server 2012 自动增长列,值跳跃问题

    介绍 从 SQL Server 2012 版本开始, 当SQL Server 实例重启之后,表格的自动增长列的值会发生跳跃,而具体的跳跃值的大小是根据增长列的数据类型而定的.如果数据类型是 整型(in ...

  6. SQL Server索引 - 索引(物化)视图 <第九篇>

    一.索引视图基本概念 索引视图实际上是一种将一组唯一值“物化”为群集索引形式的视图,所为物化就是几乎和表一样,其数据也是会存储一份的(会占用硬盘空间,但是查询速度快,例如可以将count(),sum( ...

  7. 使用SQL Server Management Studio 创建作业备份数据库

    在项目中,经常需要备份数据库,如果能做到只需点个按钮(“开始备份数据库”按钮),然后什么都不管,数据库就自动备份好了,或者服务器上的数据库隔一段时间自动备份一次,那该多好啊. Sql server 的 ...

  8. sql server中如何修改视图中的数据?

    sql server中如何修改视图中的数据? 我做个测试,视图的数据有标记字段时,如果是这种方式(0 as FlagState),是无法修改的 --创建视图语句 --- create view V_E ...

  9. 利用Microsoft Sql Server Management studio 创建数据库的示例

    利用Microsoft Sql Server Management studio 创建数据库的示例方法如下:   一.打开安装好的Microsoft Sql Server Management stu ...

随机推荐

  1. Windows中Nginx配置nginx.conf不生效解决方法(路径映射)

    Windows中Nginx配置nginx.conf不生效解决方法 今天在做Nginx项目的时候,要处理一个路径映射问题, location /evaluate/ { proxy_pass http:/ ...

  2. Docker-操作容器1

    ->点击该链接:Linux(Centos7)安装Docker<- 前言 步骤: 软件镜像->运行镜像->产生一个容器 这就类似于我们在pc端下载微信时需要启动wechat.ex ...

  3. SpringBoot注解自动扫描-底层实现

    分析上文Spring Boot快速入门 @SpringBootApplication public class HelloWorldApplication { public static void m ...

  4. 硬件vendor id查询对照列表

    Hex-ID Vendor Name003D Lockheed Martin Corp0E11 Compaq1000 Symbios Logic Inc.1001 KOLTER ELECTRONIC1 ...

  5. CuteBot智能小车

    原因 近期,别人送了我一个CuteBot智能小车,拆开一看做工挺精致的,但是这东西是积木图形编程,显然不适合我这个年龄,所以打算给家里的小孩玩. 那么,你可能会问了,为什么要写这篇文章呢?答案当然是用 ...

  6. Ant Design Pro V5 与 IdentityServer 实现 Password 模式的登录

    最近处于休息状态,想趁着休息时间,为自己做一个后台. 后端框架选用了 Abp.之前公司使用了一些自研的框架,但由于人力资源有限,后期框架的升级及维护都是比较耗时,这次干脆直接使用Abp,即省心又能快速 ...

  7. 2021年3月-第02阶段-前端基础-HTML+CSS阶段-Day03

    HTML5 第三天 一. 认识 3D 转换 3D 的特点 近大远小 物体和面遮挡不可见 三维坐标系 x 轴:水平向右 -- 注意:x 轴右边是正值,左边是负值 y 轴:垂直向下 -- 注意:y 轴下面 ...

  8. Python夺命20问

    1.请观看下列代码并回答问题: import collections from random import choice Card = collection.namedtuple('Card', [' ...

  9. 睡前聊一聊"spring bean 生命周期"

    spring bean 生命周期=实属初销+2个常见接口+3个Aware型接口+2个生命周期接口 实属初销:spring bean生命周期只有四个阶段,即实例化->属性赋值->初始化-&g ...

  10. 通俗易懂的ArcGis开发快速入门

    前言 本文主要介绍ArcGis的ArcEngine开发,学习时,我们需要放下心里障碍,那就是Gis开发只是普通的软件开发,并不需要专业的GIS知识,就是非常普通的,调用相关的C++开发的COM组件. ...