Acuma nu stiu exact cum arata tabelele tale, dar daca ar fi sa ghicesc as zice ca e pentru ca declari parametrul ca varchar(8). Query-ul tau este echivalent cu:
select ClientId, Dept, (-1)*sum(Soldl) as Sold
from table where cast(Bdata as varchar(8)) = @data
and left(AccSint,4) in ('2021','2031','2042','2052','2061','2091','2312','2811','2821')
group by ClientId, Dept
si va genera un plan care scaneaza tabela si converteste fiecare BData. Priml plan folosete un seek, al doilea un scan, de unde diferenta. Pentru a fixa problema declare @data ca datetime.
http://rusanu.com