2 Stimmen

SQL: Erweitern Sie 1 Spalte in 3 auf der Zusammenfassungstabelle.

Ich schreibe ein Programm, das Produkte und die Geschäfte, in denen sie sich befinden können, anzeigt.

Bisher konnte ich eine SQL-Abfrage schreiben, die die Daten wie folgt anzeigt:

Produkt    Verfügbarkeit
Milch       Laden1
Süßigkeiten  Laden1
Eier       Laden1
Milch       Laden2
Eier       Laden2
Süßigkeiten  Laden3
Eier       Laden3

Gibt es eine SQL-Abfrage, die ich verwenden kann, um die Produkte in der Produktspalte zu gruppieren und die Läden, in denen sie sich befinden können, in 3 Spalten wie unten dargestellt zu erweitern?

Produkt  Laden1  Laden2  Laden3
Milch     Ja     Ja     Nein
Süßigkeiten    Ja     Nein     Ja
Eier     Ja     Ja     Ja

4voto

Martin Smith Punkte 417623
SELECT 
    Produkt,
    MAX(CASE WHEN Verfügbarkeit='Store1' THEN 'Ja' ELSE 'Nein' END) AS Store1,
    MAX(CASE WHEN Verfügbarkeit='Store2' THEN 'Ja' ELSE 'Nein' END) AS Store2,
    MAX(CASE WHEN Verfügbarkeit='Store3' THEN 'Ja' ELSE 'Nein' END) AS Store3
FROM DeineTabelle
GROUP BY Produkt

3voto

Philip Kelley Punkte 38051

Eine sehr häufig gestellte Frage. Das Wort, das du kennen musst, lautet pivot. Suche auf StackOverflow nach "pivot" oder vielleicht "cross tab", um viele Diskussionen und Beispiele zu finden.

3voto

Donnie Punkte 43338

Die meisten RDBMs unterstützen heutzutage Pivot. Es wäre sehr hilfreich, wenn Sie angeben würden, welche Datenbank Sie verwenden. Einige Beispiele: MSSQL, Postgres (die Crosstab-Funktion) und so weiter.

1voto

smirkingman Punkte 5963

Vorausgesetzt, Sie kennen die Spaltennamen nicht, bevor Sie die Abfrage ausführen, dieses Blog gibt eine gute Lösung (aber Vorsicht vor Injection-Angriffen).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X