You can wrap it in an EXEC statement as follows:
declare @my_tablename nvarchar(100) = 'mytable'; exec(' SELECT * FROM ( SELECT * FROM ( SELECT * FROM ' + @my_tablename + ' ) INNER JOIN ' + @my_tablename + ' ON ...' );
But no, intellisense will not work in this scenario.
If you know what your output will look like in advance, you can declare a temporary table to store the results, and then you can access it without EXEC. You will have intellisense on the temporary table.
For instance:
--this must match whatever your SELECT is going to return CREATE TABLE
source share