最後に代わりにこれを試してください:
exec (@query)
角かっこがない場合、SQLServerは変数の値をストアドプロシージャ名と見なします。
または
EXECUTE sp_executesql @query
また、完全な結合が原因ではないはずです。
ただし、この前に、#TrafficFinal、#TrafficFinal2、#TrafficFinal3の一時テーブルを既に作成していることを願っています。
EXECとsp_executesqlの使用にはパフォーマンス上の考慮事項があることに注意してください。 sp_executesqlはspのように強制ステートメントキャッシュを使用するためです。
詳細
別の注意点として、クエリ操作を行っておらず、そのまま実行していることを考慮して、クエリをそのまま使用できる場合に、この場合に動的SQLを使用する理由はありますか?