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

Ergebniszeilen einen Namen geben

Dieses Thema im Forum "Oracle" wurde erstellt von lufraku, 14 November 2014.

  1. lufraku

    lufraku Neuer Benutzer

    Hallo,
    ich bringe mir grade selbst bei SQL Abfragen zu schreiben und habe nun das Problem, dass ich ein Ergebnis einer Abfrage habe, das so aussieht

    WERT
    1 65
    2 189

    Statt 1 und 2 sollen die Ergebniszeilen nun einen Namen bekommen. Der eine Wert ergibt sich aus dem ersten Teil der Abfrage, der zweite Wert aus dem anderen Teil. Die Selects sind mit union verknüpft. Das Ganze sieht so aus:

    select count(*) Wert
    from tab1
    where blabla in
    (select blabla2 from tab2
    where bla!='CLOSED'
    and blabla='xx' and blabla='XXX')
    and blabla is not null
    union
    select count(*) Wert
    FROM tab1
    WHERE blabla IN
    (SELECT blabla
    FROM tab2
    WHERE blabla!='CLOSED'
    and blabla!='INITIAL'
    AND blabla ='PACKING'
    )
    AND blabla!='CLOSED'

    Wo geb ich den Kindern 1 und 2 denn Namen wie z.B. "in Arbeit" und "offen"?
    Vielen Dank für eure Hilfe
     
  2. ukulele

    ukulele Datenbank-Guru

    Also erstmal sieht dein Code zum K****n aus, sry muss mal gesagt werden. Kann auch an den vielen blablas liegen aber Subselects und UNIONs da blick ich nicht durch.

    Abgesehen davon suchst du glaube ich eine CASE Schleife.
    Code:
    SELECT ( CASE WHEN spalte = 1 THEN 'in Arbeit' WHEN spalte = 2 THEN 'offen' ELSE 'wusa' END ) AS tolle_spalte FROM tolle_tabelle
     
  3. lufraku

    lufraku Neuer Benutzer

    Klar sieht das zum K***n aus. Ich bin ja froh, dass meine Abfragen funktionieren :)
    Ich laß mal das "Unwichtige" weg und hoffe man steigt dann besser durch.

    select count(*) Wert
    from tab1
    where in
    (select ...)
    union
    select count(*) Wert
    FROM tab1
    WHERE IN
    (SELECT ...)
    AND Spalte!='CLOSED'

    Das Ergebnis besteht aus zwei Zeilen mit je einer Zahl. Die eine Zahl liefert der obere select, die andere Zahl der Untere. Es ist aber nicht zu erkennen welche Zahl zu welchem Select gehört.
     
  4. ukulele

    ukulele Datenbank-Guru

    In diesem Fall ginge:
    Code:
    select 'text1' AS Spalte, count(*) Wert
    from tab1
    where in
    (select ...)
    union
    select 'text2' AS Spalte, count(*) Wert
    FROM tab1
    WHERE IN
    (SELECT ...)
    AND Spalte!='CLOSED'
     
  5. lufraku

    lufraku Neuer Benutzer

    Super. Vielen Dank.
    Und ich werde an der Optik und Übersichtlichkeit arbeiten.
     
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