DECLARE @Sql NVARCHAR(MAX)
SET @Sql = N'SELECT T2.NAME,T202301.VALUE AS ''202301'',T202302.VALUE AS ''202302'',T202303.VALUE AS ''202303'' 'SET @Sql = @Sql + N'FROM [TESTDB].[dbo].[Table_2] AS T2 'SET @Sql = @Sql + N'LEFT JOIN (SELECT * FROM [TESTDB].[dbo].[Table_1] WHERE DATE = ''202301'') AS T202301 ON T2.NAME = T202301.NAME 'SET @Sql = @Sql + N'LEFT JOIN (SELECT * FROM [TESTDB].[dbo].[Table_1] WHERE DATE = ''202302'') AS T202302 ON T2.NAME = T202302.NAME 'SET @Sql = @Sql + N'LEFT JOIN (SELECT * FROM [TESTDB].[dbo].[Table_1] WHERE DATE = ''202303'') AS T202303 ON T2.NAME = T202303.NAME '
EXEC sp_executesql @Sql