Ankündigung

Einklappen
Keine Ankündigung bisher.

MYSQL Abfrage zu einer Zeile zusammenfassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MYSQL Abfrage zu einer Zeile zusammenfassen

    Hallo zusammen,

    ich versuche seit Tagen folgende Abfrage zu Gruppieren
    Code:
    SELECT
         T1.code AS Auftragsnummer,    
    T1.description AS Bezeichnung,
    (CASE WHEN T4.code = 'NEU' AND T5.code = 'WZG' AND (T2.code = 'N' OR T2.code = 'E') THEN T6.int_id END) AS 'N-E Neu WZG',
    (CASE WHEN T4.code = 'NEU' AND T5.code = 'KAL' AND (T2.code = 'N' OR T2.code = 'E') THEN T6.int_id END) AS 'N-E Neu KAL',
    (CASE WHEN T4.code = 'NEU' AND T5.code = 'TPL' AND (T2.code = 'N' OR T2.code = 'E') THEN T6.int_id END) AS 'N-E Neu TPL',
    (CASE WHEN T4.code = 'VT' AND T5.code like '%WZG' AND (T2.code = 'N' OR T2.code = 'E') THEN T6.int_id END) AS 'N-E VT WZG',
    (CASE WHEN T4.code = 'VT' AND T5.code like '%KAL' AND (T2.code = 'N' OR T2.code = 'E') THEN T6.int_id END) AS 'N-E VT KAL',
    (CASE WHEN T4.code = 'VT' AND T5.code like '%TPL' AND (T2.code = 'N' OR T2.code = 'E') THEN T6.int_id END) AS 'N-E VT TPL',
    (CASE WHEN T4.code = 'ZA' AND T5.code like '%WZG' AND (T2.code = 'N' OR T2.code = 'E') THEN T6.int_id END) AS 'N-E ZA WZG',
    (CASE WHEN T4.code = 'ZA' AND T5.code like '%KAL' AND (T2.code = 'N' OR T2.code = 'E') THEN T6.int_id END) AS 'N-E ZA KAL',
    (CASE WHEN T4.code = 'ZA' AND T5.code like '%TPL' AND (T2.code = 'N' OR T2.code = 'E') THEN T6.int_id END) AS 'N-E ZA TPL',
    (CASE WHEN T4.code = 'VT' AND T5.code like '%WZG' AND T2.code = 'P' THEN T6.int_id END) AS 'P VT WZG',
    (CASE WHEN T4.code = 'VT' AND T5.code like '%KAL' AND T2.code = 'P'  THEN T6.int_id END) AS 'P VT KAL',
    (CASE WHEN T4.code = 'VT' AND T5.code like '%TPL' AND T2.code = 'P'  THEN T6.int_id END) AS 'P VT TPL',
    (CASE WHEN T4.code = 'VT' AND T5.code like '%WZG' AND T2.code = 'F' THEN T6.int_id END) AS 'F VT WZG',
    (CASE WHEN T4.code = 'VT' AND T5.code like '%KAL' AND T2.code = 'F'  THEN T6.int_id END) AS 'F VT KAL',
    (CASE WHEN T4.code = 'VT' AND T5.code like '%TPL' AND T2.code = 'F'  THEN T6.int_id END) AS 'F VT TPL'
    FROM    
    job AS T1
    JOIN    
    index_job AS T2 ON T1.int_id=T2.job_id
    JOIN    
    line_job AS T3 ON T2.int_id=T3.index_job_id
    JOIN    
    assembly AS T4 ON T3.int_id=T4.line_job_id
    JOIN    
    ssembly AS T5 ON T4.int_id=T5.assembly_id
    JOIN    
    task AS T6 ON T5.int_id=T6.assembly_id
    WHERE    
    T1.int_id > 0 AND    
    T6.description = 'CNC-Fräsen'
    Bei welcher ich folgendes Ergebnis erziele:


    Ziel ist es aus den 15 Zeilen eine Zeile zu machen bei welcher dann in jeder Spalte der eine verfügbare Wert ausgegeben wird.

    Quasi:
    809588_W20 | Bezeichnung xxx | 535844 | 535861 | 535877 | 535897 | 535916 | 535926 | 535938 | 535956 | usw ......

    Mit Group by komme ich nicht weiter, da wird mir immer nur ein Wert ausgegeben..

    Vielleich hat von euch jemand eine Idee wie ich das Problem lösen könnte?

    Vielen Dank im Voraus.

  • #2
    Es steckt offensichtlich alles im "code" irgendwie. Im Ziel hast du dann wieder 3 Klassifizierungen in einem Wert (N-E Neu WZG)

    Lege 3 neue Felder an (oder mach ne neue Tabelle mit einer Referenz zum Original), parse die Info aus dem "code", speichere die Teile in den jeweiligen Feldern ab. Danach kannst du mit einem simplen GROUP BY arbeiten
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      aggregiere, hier: summiere, die Werte und gruppieren nach allen nicht-aggregierten Spalten.
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar


      • #4
        warum fragst Du das eigentlich erneut?

        https://www.datenbankforum.com/threa...21/#post-36497
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Ich frage erneut, weil ich (wie ich auch in der Anfrage geschrieben habe) seit dem ich das Topic gepostet habe über dem Problem sitze, eventuell bin ich auch zu doof dafür...
          Daher hoffe ich anderweitig Hilfe zu bekommen (in einem anderen Forum).

          Die Daten werden aus einem ERP-System ausgelesen, neue Tabellen kann ich dort leider nicht anlegen.
          Deshalb hoffe ich irgendwie das ganze in einer Abfrage gelöst zu bekommen.

          Kommentar


          • #6
            Zitat von kschmelzer Beitrag anzeigen
            Deshalb hoffe ich irgendwie das ganze in einer Abfrage gelöst zu bekommen.
            Was *genau* gefällt Dir nicht an der von mir gezeigten Lösung?
            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

            Kommentar


            • #7
              Du musst nur ein GROUP BY T1.code, T2.description ans Ende des Queries packen und vor die "(CASE..."s setzt du "MAX".
              Code:
              MAX(CASE ...) AS bla

              Kommentar


              • #8
                Entschuldigt bitte die späte Rückmeldung, ich war die ganze Woche auf Dienstreise.
                Ich versuche das ganze am Montag umzusetzen und gebe dann noch einmal Rückmeldung.

                Kommentar


                • #9
                  Zitat von erc Beitrag anzeigen
                  Du musst nur ein GROUP BY T1.code, T2.description ans Ende des Queries packen und vor die "(CASE..."s setzt du "MAX".
                  Code:
                  MAX(CASE ...) AS bla
                  Das hat so funktioniert, es war allerdings T1.description notwendig (für andere die das hier lesen).

                  Vielen Dank für die Hilfe!

                  Kommentar

                  Lädt...
                  X