Prøv dette i stedet til sidst:
exec (@query)
Hvis du ikke har parenteserne, antager SQL Server værdien af variablen for at være et lagret procedurenavn.
ELLER
EXECUTE sp_executesql @query
Og det burde ikke være på grund af FULD JOIN.
Men jeg håber, du allerede har oprettet vikartabellerne:#TrafficFinal, #TrafficFinal2, #TrafficFinal3 før dette.
Bemærk venligst, at der er præstationsovervejelser mellem at bruge EXEC og sp_executesql. Fordi sp_executesql bruger tvungen sætningscache som en sp.
Flere detaljer her
.
På en anden note, er der en grund til, hvorfor du bruger dynamisk sql til dette tilfælde, når du kan bruge forespørgslen som den er, i betragtning af at du ikke laver nogen forespørgselsmanipulationer og udfører den, som den er?