5

私はこれを達成したい -

SELECT * FROM A1234

ID 1234 を Aliases という別のテーブルに保存しました。このテーブルには、このような 1 つのレコードを持つ Alias,ID という 2 つの列があります。

エイリアス = TestTable、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 に答える