Heim >Datenbank >MySQL-Tutorial >Wie werden Daten in SQL Server 2000 mithilfe der bedingten Aggregation geschwenkt?
Pivotieren von Daten in SQL Server 2000
Pivotieren von Daten bezieht sich auf den Prozess der Umwandlung eines Datensatzes von einem vertikalen, spaltenorientierten Format in ein horizontales, zeilenorientiertes Format. Mit anderen Worten: Sie können die Daten in einer Tabelle so drehen, dass Spalten zu Zeilen werden und umgekehrt.
Betrachten Sie die folgenden zwei Tabellen:
Produkte
ProductId | Name |
---|---|
1 | Product A |
2 | Product B |
Produkt Meta
ProductId | MetaKey | MetaValue |
---|---|---|
1 | A | Value A for Product A |
1 | B | Value B for Product A |
1 | C | Value C for Product A |
2 | A | Value A for Product B |
2 | B | Value B for Product B |
2 | C | Value C for Product B |
Sie möchten einen Ergebnissatz erhalten, der die Produktnamen als Zeilen und die Metaschlüssel als Spalten anzeigt, mit den entsprechenden Metawerten in jeder Zelle:
ProductName | Meta A | Meta B | Meta C |
---|---|---|---|
Product A | Value A for Product A | Value B for Product A | Value C for Product A |
Product B | Value A for Product B | Value B for Product B | Value C for Product B |
Um diesen Pivot zu erreichen, können Sie eine Kombination aus bedingter Aggregation und der CASE-Anweisung innerhalb eines SELECT verwenden Anweisung:
SELECT P.ProductId, P.Name, MIN(CASE WHEN PM.MetaKey = 'A' THEN PM.MetaValue END) AS MetaA, MIN(CASE WHEN PM.MetaKey = 'B' THEN PM.MetaValue END) AS MetaB, MIN(CASE WHEN PM.MetaKey = 'C' THEN PM.MetaValue END) AS MetaC FROM Products AS P INNER JOIN ProductMeta AS PM ON PM.ProductId = P.ProductId GROUP BY P.ProductId, P.Name;
Diese Abfrage gruppiert die Zeilen korrekt nach Produkt-ID und Name und ruft die gewünschten Metawerte für jeden Schlüssel ab.
Das obige ist der detaillierte Inhalt vonWie werden Daten in SQL Server 2000 mithilfe der bedingten Aggregation geschwenkt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!