Bạn có thể gói nó trong một câu lệnh EXEC như sau:
declare @my_tablename nvarchar(100) = 'mytable';
exec('
SELECT * FROM
(
SELECT * FROM
(
SELECT * FROM ' + @my_tablename + '
)
INNER JOIN ' + @my_tablename + ' ON ...'
);
Nhưng không, intellisense sẽ không hoạt động trong trường hợp đó.
Nếu bạn biết trước kết quả đầu ra của mình sẽ như thế nào, thì bạn có thể khai báo một bảng tạm thời để chứa các kết quả và sau đó bạn có thể truy cập mà không cần EXEC. Bạn sẽ có intellisense trên bảng tạm thời.
Ví dụ:
--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