Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

SQL Resultat mit Wert = 0 (null)

Dieses Thema im Forum "PostgreSQL" wurde erstellt von Franz66, 21 Juni 2013.

  1. Franz66

    Franz66 Benutzer

    Ich habe folgende abfrage erstellt:

    SELECT
    case when abschluss_grund_cmt = 'Geschlossen' then 'Triagekriterien nicht erfüllt'
    else abschluss_grund_cmt end as Abschluss_Grund,
    count(abschluss_grund_cmt) as Anzahl_fälle

    FROM
    v_rep_14_dev
    left join wf_issue on v_rep_14_dev.issue_id = wf_issue.issue_id
    left join wf_issue_type on wf_issue.type_id = wf_issue_type.type_id
    left join wf_issue_status on wf_issue.status_id = wf_issue_status.status_id
    where
    wf_issue_type.type_code ='CMT'
    and
    v_rep_14_dev.status_code ='CLOSED'
    group by
    abschluss_grund_cmt
    order by anzahl_fälle DESC

    und ich erhalte folgendes Resultat (s. screen)

    Frage: Wie kriege ich die leere Zeile mit dem Wert = 0 (null) weg?

    Danke für die Hilfe
     

    Anhänge:

  2. ukulele

    ukulele Datenbank-Guru

    Z.B. mit HAVING anzahl_fälle > 0 vor dem GROUP BY.
     
  3. akretschmer

    akretschmer Datenbank-Guru


    Du hast (vereinfacht):

    Code:
    test=# create table a(grund text primary key);
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "a_pkey" for table "a"
    CREATE TABLE
    Time: 5,973 ms
    test=*# create table b(grund text references a);
    CREATE TABLE
    Time: 20,144 ms
    test=*# insert into a values ('');
    INSERT 0 1
    Time: 0,439 ms
    test=*# insert into a values ('grund1');
    INSERT 0 1
    Time: 0,162 ms
    test=*# insert into b values ('grund1');
    INSERT 0 1
    Time: 0,561 ms
    test=*# select a.grund, count(b.grund) from a left join b on a.grund=b.grund group by 1 order by 2 desc;
     grund  | count
    --------+-------
     grund1 |     1
            |     0
    (2 rows)
    
    und suchst

    Code:
    test=*# select a.grund, count(b.grund) from a left join b on a.grund=b.grund group by 1 having count(b.grund) > 0 order by 2 desc ;
     grund  | count
    --------+-------
     grund1 |     1
    (1 row)
    

    Andreas
     
  4. Franz66

    Franz66 Benutzer

    Vielen Dank Andreas! Es hat prima funktioniert.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden