Microsoft的Dynamics NAV具有一个功能,其中每个SQL表名前面都有公司名称,即
我想为以'$ G_L Entry'结尾的所有表创建UNION ALL(表列/类型相同),即不指定所有表。
这是因为,在任何时候,NAV用户界面的用户都可以添加/删除公司,而且我不希望每次发生时都更新我的查询。
任何指示都非常赞赏。
(使用SQL Server 2012)
答案 0 :(得分:2)
您可以通过将表名与union all连接来构建动态sql(显然您需要列出列)
DECLARE @allEntryTables VARCHAR(MAX);
SET @allEntryTables = ( SELECT
STUFF((SELECT
' UNION ALL SELECT col1, col2, col3 FROM ' + name
FROM sys.tables
WHERE name LIKE '%$G_L Entry'
FOR XML PATH('')), 1, 11, ''));
EXEC (@allEntryTables);
答案 1 :(得分:0)
我猜你不知道你有多少个表,然后你需要先指定表列表。 你可以选择sys表。 例如:“SELECT * FROM sys.objects WHERE name LIKE'%$ G_L'和INSERT表名称为temp 这是你的表格列表。