Możesz umieścić go w instrukcji EXEC w następujący sposób:
declare @my_tablename nvarchar(100) = 'mytable';
exec('
SELECT * FROM
(
SELECT * FROM
(
SELECT * FROM ' + @my_tablename + '
)
INNER JOIN ' + @my_tablename + ' ON ...'
);
Ale nie, intellisense nie zadziała w tym scenariuszu.
Jeśli z góry wiesz, jak będą wyglądać Twoje wyniki, możesz zadeklarować tabelę tymczasową do przechowywania wyników, a następnie możesz uzyskać do niej dostęp bez EXEC. Będziesz mieć intellisense na stole tymczasowym.
Na przykład:
--this must match whatever your SELECT is going to return
CREATE TABLE #results(
FIELD1 INT
,FIELD2 NVARCHAR(100)
,FIELD3 BIT
);
EXEC('
INSERT INTO #results(field1,field2,field3)
SELECT FIELD1,FIELD2,FIELD3 FROM ' + @my_tablename
);
select * from #results --you will have intellisense on #results