Временните таблици не се премахват автоматично в края на заявка, само когато текущата връзка към DB е прекъсната или изрично ги изтриете с DROP TABLE #columntable
Или тествайте за съществуването на таблицата в началото на заявката, или винаги я изтривайте в края (за предпочитане и двете)
РЕДАКТИРАНЕ:Както Матрин каза в коментара си, това всъщност е грешка при анализ. Получавате същата грешка, ако анализирате само SQL, както когато го изпълнявате.
За да тествам това, разделих вашата заявка и опитах:
if exists (select 1 from emp where id = 6)
create table #columntable (newcolumns varchar(100))
GO
if not exists (select 1 from emp where id = 6)
create table #columntable (oldcolumns varchar(100))
GO
Анализаторът е доволен от това. Интересното е, че ако преминете към използване на невременни таблици, оригиналната заявка се анализира добре (осъзнавам проблемите, които биха създали, просто ми беше интересно да разбера защо заявката не може да анализира).