Alex:
select B.CodContract from LBF B
where B.DataReferinta='12/31/2008' and B.TipCredit=0
and B.ValoareContract != (select sum(PrincipalPlatit+PrincipalRestant-AmendamentPrincipal)
from LBF
where DataReferinta='12/31/2008' and TipCredit=0 and CodContract=B.CodContract and NodId=B.NodId
group by CodContract)
Acest select il citesc asa:
din tabele LBF gaseste toate recordurile cu TipCredit = 0 si DataReferinta='12/31/2008' care au valoarea din ValoareContract diferita de suma (PrincipalPlatit+PrincipalRestant-AmendamentPrincipal) la toate recordurile din LFB cu TipCredit = 0 si DataReferinta='12/31/2008' si acelasi NodId si CodContract.
Selectul meu i-tzi da acelasi lucru ca SQL correct. Insa ca 'business logic' este evident ca query-ul tau este incorect. Nu stiu ce reprezinta datele tale, nici nu ma intereseaza, dar daca tu compari un record X care are o valoare in CodContract si NodId cu o
suma pe acelasi nodid si contract este evident ca daca unul satisface relatia, celelate din suma nu o pot. Matematic nu ai cum sa satisfaci criteriul tau decit data nodid si codcontract sint unice (adica fiecare combinatie are un singur record), ori ceva i-mi spune ca nu e asa (altfel n-ai fi folosit SUM).
Deci mai bine gindestet-te care este conditia care o cauti. De exemplu poate tu de fapt cauti sa compari un TipCredit=0 cu SUM la TipCredit !=0.
http://rusanu.com