Heim >Datenbank >MySQL-Tutorial >Wie führe ich eine T-SQL-PIVOT-Operation ohne Aggregatfunktionen durch?
T-SQL PIVOT-Betrieb ohne Aggregatfunktionen
Im Gegensatz zu PIVOT-Operationen, die normalerweise Aggregatfunktionen erfordern, können PIVOT-Transformationen auch ohne Aggregatfunktionen durchgeführt werden. Dies kann in bestimmten Szenarien auftreten, in denen eine Datenrekonstruktion ohne Aggregation erforderlich ist.
Betrachten Sie das folgende Formular:
CustomerID | DBColumnName | Data |
---|---|---|
1 | FirstName | Joe |
1 | MiddleName | S |
1 | LastName | Smith |
1 | Date | 12/12/2009 |
2 | FirstName | Sam |
2 | MiddleName | S |
2 | LastName | Freddrick |
2 | Date | 1/12/2009 |
3 | FirstName | Jaime |
3 | MiddleName | S |
3 | LastName | Carol |
3 | Date | 12/1/2009 |
Das Ziel besteht darin, diese Daten in die folgenden Ergebnisse umzuwandeln:
CustomerID | FirstName | MiddleName | LastName | Date |
---|---|---|---|---|
1 | Joe | S | Smith | 12/12/2009 |
2 | Sam | S | Freddrick | 1/12/2009 |
3 | Jaime | S | Carol | 12/1/2009 |
Um dies mit PIVOT ohne Aggregatfunktion zu erreichen, können Sie die folgende Abfrage verwenden:
<code class="language-sql">SELECT CustomerID, MIN(CASE DBColumnName WHEN 'FirstName' THEN Data END) AS FirstName, MIN(CASE DBColumnName WHEN 'MiddleName' THEN Data END) AS MiddleName, MIN(CASE DBColumnName WHEN 'LastName' THEN Data END) AS LastName, MIN(CASE DBColumnName WHEN 'Date' THEN Data END) AS Date FROM table GROUP BY CustomerId;</code>
Diese Abfrage führt eine Case-Anweisung in einer PIVOT-Operation aus, um den Mindestwert jedes DBColumnName für eine bestimmte CustomerID auszuwählen. Da es für jede Kombination aus CustomerID und DBColumnName nur eine Datenzeile gibt, gibt die MIN-Funktion den erforderlichen Wert zurück.
Das obige ist der detaillierte Inhalt vonWie führe ich eine T-SQL-PIVOT-Operation ohne Aggregatfunktionen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!