Prova questo invece alla fine:
exec (@query)
Se non hai le parentesi, SQL Server presuppone che il valore della variabile sia un nome di stored procedure.
O
EXECUTE sp_executesql @query
E non dovrebbe essere a causa di FULL JOIN.
Ma spero che tu abbia già creato le tabelle temporanee:#TrafficFinal, #TrafficFinal2, #TrafficFinal3 prima di questo.
Si noti che esistono considerazioni sulle prestazioni tra l'utilizzo di EXEC e sp_executesql. Perché sp_executesql utilizza la memorizzazione nella cache delle istruzioni forzata come una sp.
Ulteriori dettagli qui
.
In un'altra nota, c'è un motivo per cui stai usando sql dinamico per questo caso, quando puoi usare la query così com'è, considerando che non stai eseguendo manipolazioni di query e la stai eseguendo così com'è?