我想实现这一点 -
SELECT * FROM A1234
我将 ID 1234 保存在另一个名为 Aliases 的表中,该表有两列 Alias,ID 和一条这样的记录。
别名 = 测试表,ID = 1234
所以我正在尝试这样的事情
SELECT * FROM ('A'+ (SELECT ID FROM Aliases WHERE Alias = 'TestTable'))
任何帮助,将不胜感激
我想实现这一点 -
SELECT * FROM A1234
我将 ID 1234 保存在另一个名为 Aliases 的表中,该表有两列 Alias,ID 和一条这样的记录。
别名 = 测试表,ID = 1234
所以我正在尝试这样的事情
SELECT * FROM ('A'+ (SELECT ID FROM Aliases WHERE Alias = 'TestTable'))
任何帮助,将不胜感激
为此,您需要动态 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;
您应该使用动态 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)