5

我想实现这一点 -

SELECT * FROM A1234

我将 ID 1234 保存在另一个名为 Aliases 的表中,该表有两列 Alias,ID 和一条这样的记录。

别名 = 测试表,ID = 1234

所以我正在尝试这样的事情

SELECT * FROM ('A'+ (SELECT ID FROM Aliases WHERE Alias = 'TestTable'))

任何帮助,将不胜感激

4

2 回答 2

5

为此,您需要动态 SQL。

DECLARE @sql NVARCHAR(MAX);

SELECT TOP (1) @sql = N'SELECT * FROM A' + RTRIM(ID) + ';' 
  FROM dbo.Aliases WHERE Alias = 'TestTable';

EXEC sp_executesql @sql;

要构建一组选择所有这些语句的语句,您可以说:

DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';

SELECT @sql = @sql + N'
  SELECT *, ''A' + RTRIM(ID) + ''' FROM A' + RTRIM(ID) + ';'
FROM dbo.Aliases;

PRINT @sql;

-- EXEC sp_executesql @sql;
于 2013-11-12T20:43:54.317 回答
5

您应该使用动态 sql。

DECLARE @Q VARCHAR(MAX),@ID INT
SET @ID=(Select DISTINCT ID from Aliases where Alias = 'TestTable') -- CHECK TO RETURN JUST ON RESULT
SET @Q='SELECT * FROM A'+CAST(@ID AS VARCHAR(10))
EXEC(@Q)
于 2013-11-12T20:44:16.447 回答