Sql 使用动态表查看

Sql 使用动态表查看,sql,sql-server,sql-view,Sql,Sql Server,Sql View,如何将以下查询转换为可用于创建视图的内容 create view hourlyBilling_view as declare @sql varchar(max) set @sql = '' select @sql = @sql + case len(@sql) when 0 then '' else ' UNION ALL ' end + ' SELECT * FROM [' + table_name + '] where line_item_6 is not null ' from

如何将以下查询转换为可用于创建视图的内容

create view hourlyBilling_view as
declare @sql varchar(max)
set @sql = ''
select @sql = @sql + case len(@sql) when 0 then '' else ' UNION ALL ' end + '
  SELECT * FROM [' + table_name + '] where line_item_6 is not null ' 
from
  information_schema.tables where table_name like 'Billing_trap_2019%'
exec (@sql) 
它给了我一个关于声明不能使用的错误


我在网上查过,发现这是可能的,但我没有SQL技能来解决这个问题。

在视图中甚至在表值函数中使用动态SQL都是不可能的。最接近您需要的是存储过程。

您不能在视图中使用动态SQL。如果存储过程不合适,通常方法的可能重复是动态构造视图文本(例如,生成
CREATE/ALTER view
语句并执行该语句)。如果涉及的表格发生变化,则需要重新进行;你可以把它作为工作的一部分。所有这一切都是假设这些
billing\u trap\u 2019%
表格首先应该存在,而不是仅仅将数据放在一个
billing\u trap\u 2019
表格中(如果需要的话,还有一个额外的列来区分来源)。这有一个