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

SQL-Abfrage - Werte aus mehreren Spalten in einer Zeile

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von knilix, 18 Februar 2019.

  1. knilix

    knilix Neuer Benutzer

    Hallo Zusammen,

    ich bin leider ziemlicher DB-Anfänger und stehe gerade etwas auf dem Schlauch. Vielleicht kann mir hier jemand einen Tipp geben.

    Meine aktuelle Abfrage sieht so aus:

    SELCT Tabelle1.Nummer, Tabelle1.Name, Tabelle2.Nummer, Tabell2.Gruppe

    FROM [Datenbank].[dbo].[Tabelle1], [Datenbank].[dbo].[Tabelle2]

    WHERE Tabelle1.Nummer = Tabelle2.Nummer

    ORDER BY Tabelle1.Name


    Mit folgendem Ergebniss:

    Nummer | Name | Nummer | Gruppe
    4 | ABC | 4 | AAA
    4 | ABC | 4 | BBB
    5 | ABC | 5 | AAA
    5 | ABC | 5 | BBB
    6 | ABC | 6 | AAA
    6 | ABC | 6 | BBB
    6 | ABC | 6 | CCC

    usw.

    Ich würde nun gern die Ausgabe so modifizieren, dass mein Ergebniss so aussieht:

    Nummer | Name | Nummer | GruppeValue1 | GruppeValue2 | GruppeValue3
    4 | ABC | 4 | AAA | BBB
    5 | ABC | 5 | AAA | BBB
    6 | ABC | 6 | AAA | BBB | CCC

    Kann mir jemand sagen ob und wie das möglich ist? Die Value Werte können dabei bis zur Zahl 32 ansteigen.

    Ich hoffe mein Beispiel ist soweit verständlich. Wäre über jeden Hinweis Dankbar.

    Viele Grüße
     
  2. akretschmer

    akretschmer Datenbank-Guru

    siehe FAQ hier, Zeilen zu Spalten.
     
  3. knilix

    knilix Neuer Benutzer

    Hallo akretschmer,

    vielen Dank für deinen Hinweis. Kannst du mir bitte sagen wo ich die FAQs hier finden? Unter Hinweise finde ich nur Infos zur allgemeinen Benutzung des Forum. :(
     
  4. akretschmer

    akretschmer Datenbank-Guru

  5. knilix

    knilix Neuer Benutzer

    Ich verstehe nur Bahnhof :(

    Versuche die Abfrage auf einem MS SQL Server laufen zu lassen. Dein Post zeigt auf ein PostgreSQL Forum wenn ich das richtig verstehe.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Ja, etwas Kreativität setze ich halt voraus, daß an Deine DB anzupassen.

    Code:
    test=*# select * from knillix ;
     nummer | name | gruppe
    --------+------+--------
          4 | abc  | aaa
          4 | abc  | bbb
          5 | abc  | aaa
          5 | abc  | bbb
          6 | abc  | aaa
          6 | abc  | bbb
          6 | abc  | ccc
    (7 rows)
    
    test=*# select nummer, name, nummer, string_agg(case when gruppe = 'aaa' then gruppe else null end,'') as gruppe1, string_agg(case when gruppe = 'bbb' then gruppe else null end,'') as gruppe2, string_agg(case when gruppe = 'ccc' then gruppe else null end,'') as gruppe3 from knillix group by nummer, name, nummer;
     nummer | name | nummer | gruppe1 | gruppe2 | gruppe3
    --------+------+--------+---------+---------+---------
          4 | abc  |      4 | aaa     | bbb     |
          5 | abc  |      5 | aaa     | bbb     |
          6 | abc  |      6 | aaa     | bbb     | ccc
    (3 rows)
    
    test=*#
    
     
  7. ukulele

    ukulele Datenbank-Guru

    Grundsätzlich gibt es mehrere Wege das zu erreichen, entscheidend ist dabei auf jedenfall die Frage wieviele Informationen hier gejoint werden, eventuell geht es mit PIVOT oder ähnlichen Mitteln besser. Eine einfache Lösung für 3 Informationsspalten wäre:
    Code:
    SELCT Tabelle1.Nummer, Tabelle1.Name, t1.Gruppe AS GruppeValue1, t2.Gruppe AS GruppeValue2, t3.Gruppe AS GruppeValue3
    FROM [Datenbank].[dbo].[Tabelle1]
    LEFT JOIN [Datenbank].[dbo].[Tabelle2] t1
    ON Tabelle1.Nummer = t1.Nummer
    LEFT JOIN [Datenbank].[dbo].[Tabelle2] t2
    ON Tabelle1.Nummer = t2.Nummer
    LEFT JOIN [Datenbank].[dbo].[Tabelle2] t3
    ON Tabelle1.Nummer = t3.Nummer
    ORDER BY Tabelle1.Name
    
     
  8. knilix

    knilix Neuer Benutzer

    Vielen Dank akretschmer - Ich musste erst eine aktuelle Version vom SQL Server installieren, dann ging auch die Funktion string_agg.

    fetzt :)
     
    akretschmer gefällt das.
  9. akretschmer

    akretschmer Datenbank-Guru

    Na ist doch fein zu sehen, wie die anderen Datenbanken alle von PostgreSQL lernen ;-)
     
    Kampfgummibaerlie gefällt das.
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