Sql 从具有动态计算名称的表中选择
我想写一个查询,名称表将在其中进行动态计算。我有下面这样的代码。我应该在“魔法代码”区域中放置什么Sql 从具有动态计算名称的表中选择,sql,sql-server,Sql,Sql Server,我想写一个查询,名称表将在其中进行动态计算。我有下面这样的代码。我应该在“魔法代码”区域中放置什么 DECLARE @myTableName nvarchar(100) = 'sch' + CAST(@nowYear as VARCHAR(5)) + 'Q' + CAST(@nowQuarter as VARCHAR(3)) + '.[tVisits]' -- magic code -- myTable =
DECLARE @myTableName nvarchar(100) = 'sch'
+ CAST(@nowYear as VARCHAR(5))
+ 'Q'
+ CAST(@nowQuarter as VARCHAR(3))
+ '.[tVisits]'
-- magic code --
myTable = DoSomething(@aktTableName)
-- magic code --
SELECT * FROM myTable
我使用MS SQL Server 2012您需要使用动态SQL-
DECLARE
@nowYear INT = 2013
, @nowQuarter INT = 1
DECLARE @myTableName NVARCHAR(100) = '[sch'
+ CAST(@nowYear AS VARCHAR(5))
+ 'Q'
+ CAST(@nowQuarter AS VARCHAR(3))
+ '].[tVisits]'
DECLARE @SQL NVARCHAR(MAX) = N'SELECT * FROM ' + @myTableName
EXEC sys.sp_executesql @SQL
从myTable中选择*而不是
你需要像这样做
DECLARE @sql nvarchar(4000)
SELECT @sql = ' SELECT * FROM ' + @myTable -- @myTable is a string containing qualified table name
EXEC sp_executesql @sql
请注意,sp_executesql允许参数化查询-检查您将需要动态SQL尽管动态SQL确实解决了您的问题,但我认为更好的数据结构可能会更有帮助。似乎有多个表具有相同的列。您最好使用一个表sch
,该表的列为yaer和quarter。