首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在视图中连接具有各种后缀的历史表

在视图中连接具有各种后缀的历史表
EN

Stack Overflow用户
提问于 2014-08-01 18:42:59
回答 1查看 72关注 0票数 0

在我的一个较大的表中,旧记录被移动到以季度和年份为后缀的单独的表中。例如,SILO_q1_2014

对于历史查询,我通常使用包含当前表和所有历史表的视图。这将包括上一季度,例如q2_2014,但一旦我们进入到2014年第四季度,新的q3_2014表就会过时。

,那么,让这个视图与最新季度表保持最新的最佳方式是什么呢?

代码语言:javascript
复制
ALTER VIEW [dbo].[v_SILO]
AS
    SELECT     *
    FROM         dbo.SILO
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q2_2014
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q1_2014
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q4_2012
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q3_2012
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q2_2012
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q1_2012
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q4_2011
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q3_2011
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q2_2011
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q1_2011
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q4_2010
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q3_2010
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q2_2010
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q1_2010
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q4_2009
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q3_2009
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q2_2009
    WHERE     active_flag = 1
    UNION ALL
    SELECT     *
    FROM         dbo.SILO_q1_2009
    WHERE     active_flag = 1

GO

注意:这是在SQL 2000 db中。

EN

回答 1

Stack Overflow用户

发布于 2014-08-01 20:14:47

假设您有一个标准的命名约定,您可以创建一个存储的proc,它将删除并重新创建视图,以包括当前季度。然后,将存储的proc作为一个计划作业放在SQL Server中,每月运行一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25086670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档