【发布时间】:2019-02-01 03:28:29
【问题描述】:
如何将以下查询转换为可以用来创建视图的内容。
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。
-
如果存储过程不合适,通常的方法是动态构造视图文本(例如,生成
CREATE / ALTER VIEW语句并执行该语句)。如果涉及的表发生变化,则需要重做;您可以将其作为工作的一部分。所有这一切都是假设这些billing_trap_2019%表应该首先存在,而不是您只是将数据放在 onebilling_trap_2019表中(如果需要,可以使用额外的列来区分来源)。跨度> -
这有xy problem的所有迹象
标签: sql sql-server sql-view