sql 创建动态视图,动态列
2008-09-02 11:41
302 查看
1 第一步(生成时区表)
USE [Elian]
GO
/****** 对象: Table [dbo].[G_LessonTimeZone] 脚本日期: 09/02/2008 11:46:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[G_LessonTimeZone](
[id] [int] IDENTITY(1,1) NOT NULL,
[lessonid] [int] NOT NULL,
[LessonStartTimeZoneEast1] [datetime] NULL,
[LessonStartTimeZoneEast2] [datetime] NULL,
[LessonStartTimeZoneEast3] [datetime] NULL,
[LessonStartTimeZoneEast4] [datetime] NULL,
[LessonStartTimeZoneEast5] [datetime] NULL,
[LessonStartTimeZoneEast6] [datetime] NULL,
[LessonStartTimeZoneEast7] [datetime] NULL,
[LessonStartTimeZoneEast8] [datetime] NULL,
[LessonStartTimeZoneEast9] [datetime] NULL,
[LessonStartTimeZoneEast10] [datetime] NULL,
[LessonStartTimeZoneEast11] [datetime] NULL,
[LessonStartTimeZoneEast12] [datetime] NULL,
[LessonStartTimeZoneWest1] [datetime] NULL,
[LessonStartTimeZoneWest2] [datetime] NULL,
[LessonStartTimeZoneWest3] [datetime] NULL,
[LessonStartTimeZoneWest4] [datetime] NULL,
[LessonStartTimeZoneWest5] [datetime] NULL,
[LessonStartTimeZoneWest6] [datetime] NULL,
[LessonStartTimeZoneWest7] [datetime] NULL,
[LessonStartTimeZoneWest8] [datetime] NULL,
[LessonStartTimeZoneWest9] [datetime] NULL,
[LessonStartTimeZoneWest10] [datetime] NULL,
[LessonStartTimeZoneWest11] [datetime] NULL,
[LessonStartTimeZoneWest12] [datetime] NULL,
[LessonEndTimeZoneEast1] [datetime] NULL,
[LessonEndTimeZoneEast2] [datetime] NULL,
[LessonEndTimeZoneEast3] [datetime] NULL,
[LessonEndTimeZoneEast4] [datetime] NULL,
[LessonEndTimeZoneEast5] [datetime] NULL,
[LessonEndTimeZoneEast6] [datetime] NULL,
[LessonEndTimeZoneEast7] [datetime] NULL,
[LessonEndTimeZoneEast8] [datetime] NULL,
[LessonEndTimeZoneEast9] [datetime] NULL,
[LessonEndTimeZoneEast10] [datetime] NULL,
[LessonEndTimeZoneEast11] [datetime] NULL,
[LessonEndTimeZoneEast12] [datetime] NULL,
[LessonEndTimeZoneWest1] [datetime] NULL,
[LessonEndTimeZoneWest2] [datetime] NULL,
[LessonEndTimeZoneWest3] [datetime] NULL,
[LessonEndTimeZoneWest4] [datetime] NULL,
[LessonEndTimeZoneWest5] [datetime] NULL,
[LessonEndTimeZoneWest6] [datetime] NULL,
[LessonEndTimeZoneWest7] [datetime] NULL,
[LessonEndTimeZoneWest8] [datetime] NULL,
[LessonEndTimeZoneWest9] [datetime] NULL,
[LessonEndTimeZoneWest10] [datetime] NULL,
[LessonEndTimeZoneWest11] [datetime] NULL,
[LessonEndTimeZoneWest12] [datetime] NULL,
CONSTRAINT [PK_G_LessonTimeZone] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
2 第二步根据选择时区生成动态视图,生态取列
CREATE FUNCTION fnTestView (@timezone int)
RETURNS TABLE
AS
RETURN (select lessonid,lessonstart=(case @timezone
when 1 then lessonstarttimezoneeast1
when 2 then lessonstarttimezoneeast2
when 3 then lessonstarttimezoneeast3
when 4 then lessonstarttimezoneeast4
when 5 then lessonstarttimezoneeast5
when 6 then lessonstarttimezoneeast6
when 7 then lessonstarttimezoneeast7
when 8 then lessonstarttimezoneeast8
when 9 then lessonstarttimezoneeast9
when 10 then lessonstarttimezoneeast10
when 11 then lessonstarttimezoneeast11
when 12 then lessonstarttimezoneeast12
when -1 then lessonstarttimezonewest1
when -2 then lessonstarttimezonewest2
when -3 then lessonstarttimezonewest3
when -4 then lessonstarttimezonewest4
when -5 then lessonstarttimezonewest5
when -6 then lessonstarttimezonewest6
when -7 then lessonstarttimezonewest7
when -8 then lessonstarttimezonewest8
when -9 then lessonstarttimezonewest9
when -10 then lessonstarttimezonewest10
when -11 then lessonstarttimezonewest11
when -12 then lessonstarttimezonewest12 end),
lessonend=(case @timezone
when 1 then lessonendtimezoneeast1
when 2 then lessonendtimezoneeast2
when 3 then lessonendtimezoneeast3
when 4 then lessonendtimezoneeast4
when 5 then lessonendtimezoneeast5
when 6 then lessonendtimezoneeast6
when 7 then lessonendtimezoneeast7
when 8 then lessonendtimezoneeast8
when 9 then lessonendtimezoneeast9
when 10 then lessonendtimezoneeast10
when 11 then lessonendtimezoneeast11
when 12 then lessonendtimezoneeast12
when -1 then lessonendtimezonewest1
when -2 then lessonendtimezonewest2
when -3 then lessonendtimezonewest3
when -4 then lessonendtimezonewest4
when -5 then lessonendtimezonewest5
when -6 then lessonendtimezonewest6
when -7 then lessonendtimezonewest7
when -8 then lessonendtimezonewest8
when -9 then lessonendtimezonewest9
when -10 then lessonendtimezonewest10
when -11 then lessonendtimezonewest11
when -12 then lessonendtimezonewest12 end
) from testtimezone)
3 使用
select * from fnTestView(5)
USE [Elian]
GO
/****** 对象: Table [dbo].[G_LessonTimeZone] 脚本日期: 09/02/2008 11:46:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[G_LessonTimeZone](
[id] [int] IDENTITY(1,1) NOT NULL,
[lessonid] [int] NOT NULL,
[LessonStartTimeZoneEast1] [datetime] NULL,
[LessonStartTimeZoneEast2] [datetime] NULL,
[LessonStartTimeZoneEast3] [datetime] NULL,
[LessonStartTimeZoneEast4] [datetime] NULL,
[LessonStartTimeZoneEast5] [datetime] NULL,
[LessonStartTimeZoneEast6] [datetime] NULL,
[LessonStartTimeZoneEast7] [datetime] NULL,
[LessonStartTimeZoneEast8] [datetime] NULL,
[LessonStartTimeZoneEast9] [datetime] NULL,
[LessonStartTimeZoneEast10] [datetime] NULL,
[LessonStartTimeZoneEast11] [datetime] NULL,
[LessonStartTimeZoneEast12] [datetime] NULL,
[LessonStartTimeZoneWest1] [datetime] NULL,
[LessonStartTimeZoneWest2] [datetime] NULL,
[LessonStartTimeZoneWest3] [datetime] NULL,
[LessonStartTimeZoneWest4] [datetime] NULL,
[LessonStartTimeZoneWest5] [datetime] NULL,
[LessonStartTimeZoneWest6] [datetime] NULL,
[LessonStartTimeZoneWest7] [datetime] NULL,
[LessonStartTimeZoneWest8] [datetime] NULL,
[LessonStartTimeZoneWest9] [datetime] NULL,
[LessonStartTimeZoneWest10] [datetime] NULL,
[LessonStartTimeZoneWest11] [datetime] NULL,
[LessonStartTimeZoneWest12] [datetime] NULL,
[LessonEndTimeZoneEast1] [datetime] NULL,
[LessonEndTimeZoneEast2] [datetime] NULL,
[LessonEndTimeZoneEast3] [datetime] NULL,
[LessonEndTimeZoneEast4] [datetime] NULL,
[LessonEndTimeZoneEast5] [datetime] NULL,
[LessonEndTimeZoneEast6] [datetime] NULL,
[LessonEndTimeZoneEast7] [datetime] NULL,
[LessonEndTimeZoneEast8] [datetime] NULL,
[LessonEndTimeZoneEast9] [datetime] NULL,
[LessonEndTimeZoneEast10] [datetime] NULL,
[LessonEndTimeZoneEast11] [datetime] NULL,
[LessonEndTimeZoneEast12] [datetime] NULL,
[LessonEndTimeZoneWest1] [datetime] NULL,
[LessonEndTimeZoneWest2] [datetime] NULL,
[LessonEndTimeZoneWest3] [datetime] NULL,
[LessonEndTimeZoneWest4] [datetime] NULL,
[LessonEndTimeZoneWest5] [datetime] NULL,
[LessonEndTimeZoneWest6] [datetime] NULL,
[LessonEndTimeZoneWest7] [datetime] NULL,
[LessonEndTimeZoneWest8] [datetime] NULL,
[LessonEndTimeZoneWest9] [datetime] NULL,
[LessonEndTimeZoneWest10] [datetime] NULL,
[LessonEndTimeZoneWest11] [datetime] NULL,
[LessonEndTimeZoneWest12] [datetime] NULL,
CONSTRAINT [PK_G_LessonTimeZone] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
2 第二步根据选择时区生成动态视图,生态取列
CREATE FUNCTION fnTestView (@timezone int)
RETURNS TABLE
AS
RETURN (select lessonid,lessonstart=(case @timezone
when 1 then lessonstarttimezoneeast1
when 2 then lessonstarttimezoneeast2
when 3 then lessonstarttimezoneeast3
when 4 then lessonstarttimezoneeast4
when 5 then lessonstarttimezoneeast5
when 6 then lessonstarttimezoneeast6
when 7 then lessonstarttimezoneeast7
when 8 then lessonstarttimezoneeast8
when 9 then lessonstarttimezoneeast9
when 10 then lessonstarttimezoneeast10
when 11 then lessonstarttimezoneeast11
when 12 then lessonstarttimezoneeast12
when -1 then lessonstarttimezonewest1
when -2 then lessonstarttimezonewest2
when -3 then lessonstarttimezonewest3
when -4 then lessonstarttimezonewest4
when -5 then lessonstarttimezonewest5
when -6 then lessonstarttimezonewest6
when -7 then lessonstarttimezonewest7
when -8 then lessonstarttimezonewest8
when -9 then lessonstarttimezonewest9
when -10 then lessonstarttimezonewest10
when -11 then lessonstarttimezonewest11
when -12 then lessonstarttimezonewest12 end),
lessonend=(case @timezone
when 1 then lessonendtimezoneeast1
when 2 then lessonendtimezoneeast2
when 3 then lessonendtimezoneeast3
when 4 then lessonendtimezoneeast4
when 5 then lessonendtimezoneeast5
when 6 then lessonendtimezoneeast6
when 7 then lessonendtimezoneeast7
when 8 then lessonendtimezoneeast8
when 9 then lessonendtimezoneeast9
when 10 then lessonendtimezoneeast10
when 11 then lessonendtimezoneeast11
when 12 then lessonendtimezoneeast12
when -1 then lessonendtimezonewest1
when -2 then lessonendtimezonewest2
when -3 then lessonendtimezonewest3
when -4 then lessonendtimezonewest4
when -5 then lessonendtimezonewest5
when -6 then lessonendtimezonewest6
when -7 then lessonendtimezonewest7
when -8 then lessonendtimezonewest8
when -9 then lessonendtimezonewest9
when -10 then lessonendtimezonewest10
when -11 then lessonendtimezonewest11
when -12 then lessonendtimezonewest12 end
) from testtimezone)
3 使用
select * from fnTestView(5)
相关文章推荐
- SQL 存储过程动态创建视图
- Sql 存储过程 即返回结果集又返回值 以及动态创建视图
- SQLServer 动态sql创建指定数据库下的视图
- VC++ 表格、完整性约束、视图、触发器、存储过程的创建SQL语句
- 33.Oracle杂记——Oracle常用动态视图v$sql
- 11g-新特性-动态视图-v$sql_hint
- SQL视图的创建和使用
- 使用sql语句创建视图
- SQL优化一例,由于动态性能视图统计信息不准确引起的查询缓慢
- sql 视图创建索引
- 创建和触发sql2005视图中的触发器
- sql语句动态创建连接服务器
- 使用VBA动态创建SQL查询语句
- sql 2000 分布式分区视图的创建步骤
- 把动态SQL结果集转化为视图查询的方法(运行环境:SQL2005以上版本)
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- 在Django中创建动态视图的教程
- 与SQL相关的动态性能视图
- VC如何动态创建picture组件,按坐标创建在视图上,并且可以加入位图(从资源中加也可以)!
- ASP和SQL语句动态创建Access表