Welcome to Sign in | Help

Re: Select >> Update - SQL Server 2005

  •  01-22-2009, 3:22 PM

    Re: Select >> Update - SQL Server 2005

    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
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems