Welcome to Sign in | Help
in Search

Group by ...

Last post 11-28-2007, 2:06 PM by valky. 5 replies.
Sort Posts: Previous Next
  •  11-27-2007, 11:59 AM 3463

    Group by ...

    Buna ziua,

     Am o problema intr-un select mic ...

     select case when count(column1) =0 then 0 else sum(valoare) end as 'test'
    from table1
    where column3 = 0
    and data <= '2007-09-30'
    and column4 = 145214

    Numarul de linii pe coloana 1 este 0 si, in consecinta, rezultatul este:

    test

    0 

     

    Daca incerc acelasi select, dar grupat pe o alta coloana, nu mi se mai afiseaza nimic:

     

     select column4, case when count(column1) =0 then 0 else sum(valoare) end as 'test'
    from table1
    where column3 = 0
    and data <= '2007-09-30'
    and column4 = 145214

    group by column4

     

     
    Logic privind lucrurile ar trebui sa-mi afiseze

    column4          test                      

    145214              0

    In schimb nu-mi afiseaza nici un rezultat. E o problema de care m-am mai lovit si nu i-am gasit rezolvarea pana acum. 

    Daca poate sa-mi descreteasca cineva fruntea, as fi etern recunoscator.

     
    Va multumesc,

    V
     

  •  11-27-2007, 2:06 PM 3468 in reply to 3463

    Re: Group by ...

    Rezultatul mi se pare ok in ambele rulari.

    La prima rulare desi nu exista nici un rand care sa satisfaca predicatul iti intra pe THEN si afiseaza zero. In cazul asta nu ai nevoie de nici o coloana din tabela.

    In al doilea select folosesti o coloana din tabela respectiva, dar cum sunt 0 randuri care satisfac predicatul normal ca nu iti intoarce nici un rezultat. Nu are nici o valoare pentru column4 care sa o afiseze.

  •  11-27-2007, 2:32 PM 3470 in reply to 3468

    Re: Group by ...

    Ideea este ca am nevoie sa-mi afiseze coloana 4 si o valoare de 0/null pe test.

    Nu exista nici o metoda ? 

  •  11-27-2007, 2:49 PM 3472 in reply to 3463

    Re: Group by ...

    Am răspuns la celălalt thread: http://sqlserver.ro/forums/3471/ShowThread.aspx#3471

    Răzvan 

  •  11-27-2007, 4:49 PM 3476 in reply to 3470

    Re: Group by ...

    De ce ai vrea coloana 4 daca tu o dai ca parametru de input?

     select column4, case when count(column1) =0 then 0 else sum(valoare) end as 'test'
    from table1
    where column3 = 0
    and data <= '2007-09-30'
    and column4 = 145214

     Poti sa inlocuiesti column4 cu valoarea ei:

      select 145214 as column4, case when count(column1) =0 then 0 else sum(valoare) end as 'test'
    from table1
    where column3 = 0
    and data <= '2007-09-30'
    and column4 = 145214

     

  •  11-28-2007, 2:06 PM 3484 in reply to 3476

    Re: Group by ...

    Era doar ceva sa imi exemplifice problema.

     acest "mic" select face parte dintr-un set mult mai mare, reprezentand o "tabela" externa si aveam nevoie sa fac joinul dupa column4, filtrul neexistand, el a fost pus doar pt a-mi exemplifica punctual problema.

     

    Am rezolvat oricum, am gasit alta metoda de a face join-urile in asa fel incat sa-mi functioneze corect.

     

    Va multumesc pt raspunsuri.



     

View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems