Web888.vn
  • Shop
  • Blog
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Datenbank
  • Micrsoft SQL Server
SQL Server-Pivot- und Gruppierungssatz-Operatoren

SQL Server-Pivot- und Gruppierungssatz-Operatoren

  • 12-09-2022
  • Toanngo92
  • 0 Comments

Visualisieren Sie eine Situation, in der die Daten in einer anderen Ausrichtung angezeigt werden sollen, als die Daten gespeichert werden, mit den Bedingungen für das Zeilen- und Spaltenlayout. Der Prozess der Umwandlung von zeilenbasierten in spaltenbasierte Daten wird als Pivot bezeichnet. Die PIVOT- und UNPIVOT-Operatoren in SQL Server helfen dabei, die Datenausrichtung von spaltenorientiert zu zeilenorientiert und umgekehrt zu ändern. Dies geschieht, indem die in einer Spalte enthaltenen Werte zu einer Liste mit unterschiedlichen Werten zusammengeführt und diese Liste dann als Spaltenüberschrift projiziert werden.

Mục lục

  • PIVOT .operator
  • UNPIVOT .-Operator

PIVOT .operator

Dokumente: https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-ver16

Syntax:

SELECT <non-pivoted column>, [first pivoted column] AS <column name>, [second pivoted column] AS <column name>, ... [last pivoted column] AS <column name> FROM (<SELECT query that produces the data>) AS <alias for the source query> PIVOT ( <aggregation function>(<column being aggregated>) FOR [<column that contains the values that will become column headers>] IN ( [first pivoted column], [second pivoted column], ... [last pivoted column]) ) AS <alias for the pivot table> <optional ORDER BY clause>;

Um es einfacher auszudrücken, um PIVOT zu verwenden, benötigen wir 3 Komponenten in der Syntax:

  • In der FROM-Klausel muss immer die Eingabespalte angegeben werden, der PIVOT-Operator verwendet diese Spalten, um zu identifizieren, welche Spalten verwendet werden sollen, um die Daten für die Aggregation zu gruppieren.
  • Das in den Feeddaten erscheinende Kommatrennzeichen wird als Spaltenüberschrift für die pivotierten Daten verwendet.
  • Mit einer Aggregationsfunktion wie SUM, die zum Durchführen von Berechnungen und Gruppieren von Datensätzen verwendet wird.

Zum Beispiel:

In Anbetracht der folgenden Situation, wenn Sie die durchschnittlichen Kosten für Reparaturtage in den Fällen von 1, 2, 3, 4 Tagen erhalten möchten, lautet die Syntax bei normaler Verwendung von GROUP BY wie folgt:

USE AdventureWorks2019 ; GO SELECT DaysToManufacture, AVG(StandardCost) AS AverageCost FROM Production.Product GROUP BY DaysToManufacture;
Ergebnisse von GROUP BY

Dies führt zu einem fehlenden DaysToManufacturing-Datensatz von 3, da bei 3 COST-Preisen nicht gemittelt werden kann, da keine Daten vorhanden sind. Dieses Problem kann über PIVOT wie folgt behandelt werden:

SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days, [0], [1], [2], [3], [4] FROM ( SELECT DaysToManufacture, StandardCost FROM Production.Product ) AS SourceTable PIVOT ( AVG(StandardCost) FOR DaysToManufacture IN ([0], [1], [2], [3], [4]) ) AS PivotTable;
Bei Verwendung von PIVOT zurückgegebenes Ergebnis

Beispiel 2:

Rufen Sie die Top 5 SalesYTD-Gesamtsummen der Sales.SalesTerritory-Tabelle wie folgt ab:

SELECT TOP 5 SUM(SalesYTD) AS TotalSalesYTD, Name FROM Sales.SalesTerritory GROUP BY Name
Bei Verwendung von GROUP BY zurückgegebene Daten

Und da die Daten klein sind, zeigen sie nur den Wert jedes Bereichs an, sodass wir die Daten horizontal verteilen können, sodass die Datenbank beim Abfragen der Datenbank nur eine Zeile zurückgibt, wodurch die Fähigkeit zum Lesen und Analysieren für die Datenbankabfrage erhöht wird Person:

SELECT TOP 5 'TotalSalesYTD' AS GrandTotal, [NorthWest],[NorthEast],[Central],[Southwest],[Southeast] FROM (SELECT TOP 5 Name,SalesYTD FROM Sales.SalesTerritory) AS SourceTable PIVOT (SUM(SalesYTD) FOR Name IN ([NorthWest],[NorthEast],[Central],[Southwest],[Southeast])) AS PivotTable;

Eine große Herausforderung beim Schreiben von Abfragen mit PIVOT ist die Anforderung, eine feste Liste von Spread-Elementen für den PIVOT-Operator bereitzustellen. Dies ist für eine große Anzahl von Spreizelementen nicht machbar oder unpraktisch. Um dies zu umgehen, können Entwickler dynamisches SQL verwenden. Dynamic SQL bietet eine Lösung zum Erstellen eines Zeichenfolgenliterals, das an SQL Server übergeben, als Befehl interpretiert und dann von SQL Server ausgeführt wird.

UNPIVOT .-Operator

Der UNPIVOT- Operator wird als das Gegenteil von PIVOT verstanden, was bedeutet, die Achse von Spalte zu Zeile zu drehen. Unpivot speichert den ursprünglichen Wert nicht, detaillierte Daten gingen während der Aggregation beim Pivotieren verloren. UNPIVOT kann keinen Wert zuweisen, um die ursprünglichen Detaildaten zurückzugeben. Anstatt Zeilen in Spalten umzuwandeln, konvertiert das Ergebnis von unpivot Spalten in Zeilen. SQL Server stellt den UNPIVOT- Operator bereit, um Daten aus Pivot-Tabellen in eine zeilenbasierte Ausrichtung zu konvertieren.

Beim Entpivotieren von Daten werden eine oder mehrere als Quelle definierte Spalten in Zeilen konvertiert. Die Daten in diesen Zeilen werden auf eine oder mehrere Zeilen verteilt oder aufgeteilt, je nachdem, wie viele Spalten entpivotiert werden müssen.

Zum Beispiel:

CREATE TABLE pvt (VendorID INT, Emp1 INT, Emp2 INT, Emp3 INT, Emp4 INT, Emp5 INT); GO INSERT INTO pvt VALUES (1,4,3,5,4,4); INSERT INTO pvt VALUES (2,4,1,5,5,5); INSERT INTO pvt VALUES (3,4,3,5,4,4); INSERT INTO pvt VALUES (4,4,2,5,5,4); INSERT INTO pvt VALUES (5,5,1,5,5,5); GO -- Unpivot the table. SELECT VendorID, Employee, Orders FROM (SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5 FROM pvt) p UNPIVOT (Orders FOR Employee IN (Emp1, Emp2, Emp3, Emp4, Emp5) )AS unpvt; GO
Nach Verwendung von UNPIVOT zurückgegebene Daten

Bài viết liên quan:

SQL Server GROUP BY-Klausel
Einführung in Microsoft SQL Server
Schritt-für-Schritt-Anleitung zur Installation von Microsoft SQL Server und zur Verbindung mit der Datenbank für Anfänger
Einführung in Transact-SQL (T-SQL)
Erstellen und verwalten Sie die Datenbank, erstellen Sie Benutzer in SQL Server
Tabelle (Tabelle) in SQL Server
Constraint (constraint) table strong SQL Server
Unterabfragen (Unterabfragen) in SQL Server
SQL Server JOIN-Klausel
Common Table Expression (CTE) – Common Table Expression in SQL Server
Kombinieren von Daten mit (SET OPERATORS) UNION, INTERSECT und EXCEPT in SQL Server
Index in SQL Server

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

JSON-Daten in SQL Server

Erweiterte SQL-Funktionen in SQL Server 2019

Einführung in Azure SQL

PHP manuell auf Linux- und Unix-Betriebssystemen installieren

Installieren Sie PHP manuell auf Mac OS

Giới thiệu

web888.vn là chuyên trang chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với web888

© web888.vn - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.

Your personal data will be used to support your experience throughout this website, to manage access to your account, and for other purposes described in our privacy policy.

Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×