需要从表列表中创建SQL视图

时间:2015-08-16 16:35:06

标签: sql sql-server views

尝试创建一个视图,其中所有表具有相同的字段但其中包含不同的数据。我们有一个表,我们跟踪每个表,并跟踪哪些表是活动的。所以我想要一个将所有活动表放在一个视图中的视图。

假设您有表A,B和C.只有B和C处于活动状态,表1列出了每个表以及哪些表处于活动状态。因此,从表格1中我们可以获得视图所需的表名。

在SQL Server(2008版)

上如何做到这一点让我感到震惊

2 个答案:

答案 0 :(得分:0)

这听起来像是一个糟糕的设计。最好将所有数据存储在一个表中,并使用分区方法来访问它。

但是,这是一种做你想做的事情的方法:

create view abc as
    select a.*
    from a cross join
         (select 1 from table1 where status = 'active' and tablename = 'a')
    union all
    select b.*
    from b cross join
         (select 1 from table1 where status = 'active' and tablename = 'b')
    select c.*
    from c cross join
         (select 1 from table1 where status = 'active' and tablename = 'c');

我不推荐这种方法。它只是为了表明它是可能的。我选择了cross join,因为子查询只被评估一次,这可能是底层执行代码的优化。

答案 1 :(得分:0)

也许您需要使用表分区:What is a table partition?

以下是一个示例:MSDN