1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Zeilen zusammenfassen und addieren

Dieses Thema im Forum "Oracle" wurde erstellt von Anja_R, 3 November 2010.

  1. Anja_R

    Anja_R Neuer Benutzer

    Hallo zusammen,
    vielleicht kann mir von Euch jemand bei meinem Problem helfen.

    Ich habe eine Tabelle mit:

    Abteilung | Auftraege
    ---------------------
    CD/FGG1 | 4
    CD/FGG2 | 7
    CD/FGG3 | 2
    FG/HLB1 | 8
    FG/HLB2 | 1

    Wie kann ich jetzt eine Abfrage schreiben, die mir die Abteilungen CD/FGG1, CD/FGG2 und CD/FGG3 zusammenfasst und die Aufträge summiert. Das Gleiche mit den Abteilungen FG/HLB1 und FG/HLB2.

    Die Tabelle soll dann so aussehen:

    Abteilung | Auftraege
    --------------------
    CD/FGG | 13
    FG/HLB | 9

    Ist das überhaupt möglich? Ich wäre total froh wenn ihr mir helfen könntet.

    Viele Grüße,
    Anja
     
  2. thomas_w

    thomas_w Datenbank-Guru

    AW: Zeilen zusammenfassen und addieren

    Probier mal...

    Code:
    CREATE TABLE abt_auf (
     id INT NOT NULL,
     abteilung VARCHAR(20),
     auftraege INT NOT NULL,
     PRIMARY KEY(id)
    );
     
    INSERT INTO abt_auf VALUES
    (1, 'CD/FGG1' , 4),
    (2, 'CD/FGG2' , 7),
    (3, 'CD/FGG3' , 2),
    (4, 'FG/HLB1' , 8),
    (5, 'FG/HLB2' , 1);
     
     
    SELECT SUBSTR(abteilung,1,6) AS hauptabteilung, SUM(auftraege) 
      FROM abt_auf
    GROUP BY SUBSTR(abteilung,1,6)
    ORDER BY SUBSTR(abteilung,1,6);
    +----------------+----------------+
    | hauptabteilung | SUM(auftraege) |
    +----------------+----------------+
    | CD/FGG         |             13 |
    | FG/HLB         |              9 |
    +----------------+----------------+
    2 rows in set (0.00 sec)
    mysql>
     
    
    Grüße
    Thomas
     
  3. Anja_R

    Anja_R Neuer Benutzer

    AW: Zeilen zusammenfassen und addieren

    hallo thomas,

    VIELEN Dank für die schnelle Antwort!

    Damit kann ich auf jedenfall etwas anfangen. Eigentlich ist es so einfach...oh mann..

    Es kann aber sein, dass ich in nächster Zeit nochmal eine Frage dazu habe :)
     
  4. Anja_R

    Anja_R Neuer Benutzer

    AW: Zeilen zusammenfassen und addieren

    Okay jetzt komm ich doch gleich nochmal mit einer zweiten Frage:

    Ich habe immer noch die gleiche Tabelle nur ist noch eine weitere Abteilungen dazugekommen:

    Abteilung | Auftraege
    ---------------------
    CD/FGG1 | 4
    CD/FGG2 | 7
    CD/FGG3 | 2
    FG/HLB1 | 8
    FG/HLB2 | 1
    HLL1/FGG-1 | 5

    Wenn ich jetzt das SUBTR anwende bekomm ich ja nur HLL1/F. Ich möchte aber dass er mir schon die Abteilung sinnvoll ausgibt: HLL1/FGG

    Bis jetzt wollte ich das so lösen:

    SELECT
    CASE
    WHEN abteilung = 'CD/FGG1'
    OR abteilung = 'CD/FGG2'
    OR abteilung = 'CD/FGG3'
    OR abteilung = 'FG/HLB1'
    OR abteilung = 'FG/HLB2'
    THEN SUBSTR(abteilung,1,6)
    ELSE SUBSTR(abteilung,1,8)
    END abteilung,
    COUNT (auftraege) Auftraege,
    GROUP BY SUBSTR(abteilung,1,6), SUBSTR(abteilung,1,8);

    Jetzt bekomm ich immer die Fehlermeldung:
    not a GROUP BY expression

    wie kann ich das lösen? vielen Dank schon mal für eure Hilfe!!

    Grüße Anja
     
  5. thomas_w

    thomas_w Datenbank-Guru

    AW: Zeilen zusammenfassen und addieren

    Mach mal so...
    Code:
    INSERT INTO abt_auf VALUES
    (6, 'HLL1/FGG-1' ,5 );
     
    SELECT CASE (LENGTH(abteilung))
            WHEN 7 THEN SUBSTRING(abteilung,1,6)
            WHEN 10 THEN SUBSTRING(abteilung,1,8)
           ELSE
            abteilung
           END AS hauptabteilung,
           SUM(auftraege)
      FROM abt_auf
    GROUP BY CASE (LENGTH(abteilung))
              WHEN 7 THEN SUBSTRING(abteilung,1,6)
              WHEN 10 THEN SUBSTRING(abteilung,1,8)
             ELSE
              abteilung
             END       
    ORDER BY CASE (LENGTH(abteilung))
              WHEN 7 THEN SUBSTRING(abteilung,1,6)
              WHEN 10 THEN SUBSTRING(abteilung,1,8)
             ELSE
              abteilung
             END;
     
    +----------------+----------------+
    | hauptabteilung | SUM(auftraege) |
    +----------------+----------------+
    | CD/FGG         |             13 |
    | FG/HLB         |              9 |
    | HLL1/FGG       |              5 |
    +----------------+----------------+
    3 rows in set (0.00 sec)
    mysql>
    
    Ob es allerdings sinnvoll ist, die Abteilungsnamen so auszuwerden ist fraglich. Da fehlt eine korrekte übergeordnete Hauptabteilung.

    Grüße
    Thomas
     
  6. Anja_R

    Anja_R Neuer Benutzer

    AW: Zeilen zusammenfassen und addieren

    Sorry für die späte Antwort!

    Also vielen vielen Dank für deine Hilfe!! Bei mir funktioniert es jetzt!

    Meine Werte und meine Tabelle waren nur ein vereinfachtes Beispiel, um mein Problem besser veranschaulichen zu können. Eigentlich sieht das alles ein bisschen anders aus ;).

    Also nochmal, vielen Dank!!

    Viele Grüße,
    Anja
     
Die Seite wird geladen...

Diese Seite empfehlen