Σχετικός αποθηκεύστε τεράστιες ποσότητες δεδομένων με τη μορφή πινάκων. Αυτοί οι πίνακες μπορούν να έχουν οποιοδήποτε αριθμό σειρών και στηλών. Αλλά, τι γίνεται αν έπρεπε να αλλάξετε τα δεδομένα επιπέδου γραμμής σε στήλη; Λοιπόν, σε αυτό το άρθρο σχετικά με το SQL Pivot, θα σας δείξω πώς μπορείτε να μετατρέψετε σειρές σε μια στήλη σε έναν SQL Server.
Τα ακόλουθα θέματα θα καλυφθούν σε αυτό το άρθρο:
Τι είναι το PIVOT στο SQL;
Το PIVOT χρησιμοποιείται για την περιστροφή της τιμής πίνακα μετατρέποντας τις μοναδικές τιμές μιας μεμονωμένης στήλης σε πολλές στήλες. Χρησιμοποιείται για την περιστροφή των γραμμών σε τιμές στηλών και εκτελεί συγκεντρώσεις όταν απαιτείται στις υπόλοιπες τιμές στηλών.
τι είναι μια παρουσία στην Java
Το UNPIVOT, από την άλλη πλευρά, χρησιμοποιείται για την εκτέλεση των αντίθετων λειτουργιών. Έτσι, χρησιμοποιείται για τη μετατροπή των στηλών ενός συγκεκριμένου πίνακα σε τιμές στηλών.
Προχωρώντας σε αυτό το άρθρο, ας κατανοήσουμε τη σύνταξη του SQL Pivot.
Σύνταξη:
SELECT NonPivited ColumnName, [First Pivot ColumnName] AS ColumnName, [Second Pivot ColumnName] AS ColumnName, [Third Pivot ColumnName] AS ColumnName, ... [Last Pivot ColumnName] AS ColumnName FROM (SELECT ερώτημα που παράγει τα δεδομένα) AS [ψευδώνυμο για το αρχικό ερώτημα] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName της στήλης των οποίων οι τιμές θα γίνουν κεφαλίδες στήλης] IN ([First Pivot ColumnName], [Second Pivoting ColumnName], [Third Pivoting ColumnName] ... [τελευταίο περιστρεφόμενη στήλη])) AS [ψευδώνυμο για τον συγκεντρωτικό πίνακα]
Εδώ,μπορείτε επίσης να χρησιμοποιήσετε το ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ ρήτρα για να ταξινομήσετε τις τιμές είτε με αύξουσα είτε με φθίνουσα σειρά. Τώρα που γνωρίζετε τι είναι το PIVOT στη SQL και τη βασική σύνταξή του, ας προχωρήσουμε και να δούμε πώς να το χρησιμοποιήσουμε.
Παραδείγματα
Για την καλύτερη κατανόησή σας, θα εξετάσω τον παρακάτω πίνακα για να σας εξηγήσω όλα τα παραδείγματα.
Πίνακας προμηθευτών:
Προμηθευτής | DaysofManufacture | Κόστος | Κωδικός πελάτη | PurchaseID |
ένας | 12 | 1230 | έντεκα | Ρ1 |
2 | είκοσι ένα | 1543 | 22 | Ρ2 |
3 | 32 | 2. 3. 4. 5 | έντεκα | Ρ3 |
4 | 14 | 8765 | 22 | Ρ1 |
5 | 42 | 3452 | 33 | Ρ3 |
6 | 31 | 5431 | 33 | Ρ1 |
7 | 41 | 2342 | έντεκα | Ρ2 |
8 | 54 | 3654 | 22 | Ρ2 |
9 | 33 | 1234 | έντεκα | Ρ3 |
10 | 56 | 6832 | 33 | Ρ2 |
Ας γράψουμε ένα απλό ερώτημα για να ανακτήσουμε το μέσο κόστος που ξοδεύει κάθε πελάτης.
SELECT CustomerID, AVG (Cost) AS AverageCostofCustomer FROM Προμηθευτών GROUP BY CustomerID
Παραγωγή:
Κωδικός πελάτη | Μέσος όρος πελάτη |
έντεκα | 1787.75 |
22 | 4654 |
33 | 5238.33 |
Τώρα, ας πούμε ότι θέλουμε να περιστρέψουμε τον παραπάνω πίνακα. Εδώ, οι τιμές στηλών CustomerID θα γίνουν κεφαλίδες στηλών.
- Δημιουργία συγκεντρωτικού πίνακα με μία σειρά και τρεις στήλες ΕΠΙΛΟΓΗ 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT (AVG (Cost) FOR CustomerID IN ( [11], [22], [33])) Συγκεντρωτικός πίνακας
Παραγωγή:
Κόστος_Απογραφή_Για_ Πελάτες | έντεκα | 22 | 33 |
Μέσος όρος πελάτη | 1787.75 | 4654 | 5238.33 |
Σημείωση: Όταν χρησιμοποιείτε συνολικές συναρτήσεις με το PIVOT, οι τιμές null δεν λαμβάνονται υπόψη κατά τον υπολογισμό μιας συγκέντρωσης.
Λοιπόν, αυτό ήταν ένα βασικό παράδειγμα, αλλά ας καταλάβουμε τώρα πώς λειτούργησε η ρήτρα PIVOT.
Εργασία της ρήτρας PIVOT
Όπως μπορείτε να αναφέρετε παραπάνω, για να δημιουργήσετε ένα PIVOT TABLE, πρέπει να ακολουθήσετε τα παρακάτω βήματα:
- Επιλέξτε στήλες για περιστροφή
- Στη συνέχεια, επιλέξτε έναν πίνακα προέλευσης.
- Εφαρμόστε τον τελεστή PIVOT και, στη συνέχεια, χρησιμοποιήστε τις συγκεντρωτικές συναρτήσεις.
- Αναφέρετε τις συγκεντρωτικές τιμές.
Επιλέξτε στήλες για περιστροφή
Αρχικά, πρέπει να καθορίσουμε τα πεδία που θα συμπεριληφθούν στα αποτελέσματά μας. Στο παράδειγμά μας, εξέτασα τη στήλη AverageCostofCustomer στον συγκεντρωτικό πίνακα. Στη συνέχεια, δημιουργήσαμε τρεις άλλες στήλες με τις κεφαλίδες στηλών 11, 22 και 33. Παράδειγμα-
ΕΠΙΛΟΓΗ «Μέσος όρος κόστους πελάτη» AS Κόστος_Κατάρτιση_To_Customers, [11], [22], [33]
Επιλέξτε τον πίνακα προέλευσης
Στη συνέχεια, πρέπει να καθορίσετε τη δήλωση SELECT που θα επιστρέψει τα δεδομένα προέλευσης για τον συγκεντρωτικό πίνακα. Στο παράδειγμά μας, επιστρέφουμε το αναγνωριστικό πελάτη και το κόστος από τον πίνακα προμηθευτών.
(ΕΠΙΛΕΞΤΕ Κωδικός πελάτη, Κόστος ΑΠΟ προμηθευτές) Πίνακας Πηγής
Εφαρμόστε τον τελεστή PIVOT και, στη συνέχεια, χρησιμοποιήστε τις συγκεντρωτικές συναρτήσεις
Στη συνέχεια, πρέπει να καθορίσετε τη συνάθροιση που θα χρησιμοποιείται κατά τη δημιουργία του συγκεντρωτικού πίνακα. Στο παράδειγμά μας, έχω χρησιμοποιήσει τη συνάρτηση AVG για τον υπολογισμό του μέσου κόστους.
PIVOT (AVG (κόστος)
Αναφέρετε τις συγκεντρωτικές τιμές
Τέλος, πρέπει να αναφέρετε τις τιμές που πρέπει να περιληφθούν στον συγκεντρωτικό πίνακα που προκύπτει. Αυτές οι τιμές θα χρησιμοποιηθούν ως επικεφαλίδες στηλών στον συγκεντρωτικό πίνακα.
ΓΙΑ ΤΟ CustomerID IN ([11], [22], [33])) ως Συγκεντρωτικός Πίνακας
Έτσι λειτουργούν οι χειριστές PIVOT. Προχωρώντας σε αυτό το άρθρο σχετικά με το SQL PIVOT, ας καταλάβουμε πόσο διαφορετικό είναι από το SQL UNPIVOT.
SQL UNPIVOT
Ο τελεστής SQL UNPIVOT χρησιμοποιείται για την εκτέλεση της αντίθετης λειτουργίας από εκείνη του PIVOT. Χρησιμοποιείται για την περιστροφή των δεδομένων της στήλης σε δεδομένα επιπέδου γραμμής. Η σύνταξη, του UNPIVOT, είναι παρόμοια με αυτή του PIVOT. Η μόνη διαφορά είναι ότι πρέπει να χρησιμοποιήσετε το ' UNPIVOT ' .
Παράδειγμα:
Ας δημιουργήσουμε έναν πίνακα με τις στήλες SupplierID, AAA, BBB και CCC. Επίσης, εισαγάγετε μερικές τιμές.
ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΔΕΙΓΜΑΤΟΣ (Προμηθευτής int, AAA int, BBB int, CCC int) GO INSERT INTO sampletable VALUES (1,3,5,6) INSERT INTO sampletable VALU (2,9,2,8) INSERT INTO sampletable VALUES (3, 8,1,7) Πηγαίνετε
Παραγωγή:
Προμηθευτής | ΑΑΑ | BBB | CCC |
ένας | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | ένας | 7 |
Τώρα, ας πούμε, θέλουμε να αποσυνδέσουμε τον πίνακα. Για να το κάνετε αυτό, μπορείτε να ανατρέξετε στον ακόλουθο κωδικό:
SELECT Προμηθευτής, Πελάτες, Προϊόντα ΑΠΟ (SELECT ΠρομηθευτήςD, AAA, BBB, CCC FROM sampletable) p UNPIVOT (Προϊόντα ΓΙΑ Πελάτες IN (AAA, BBB, CCC))
Προμηθευτής | Οι πελάτες | Προϊόντα |
ένας | ΑΑΑ | 3 |
ένας | BBB | 5 |
ένας τι είναι η λειτουργία στο sql | CCC | 6 |
2 | ΑΑΑ | 9 |
2 | BBB | 2 |
2 | CCC | 8 |
3 | ΑΑΑ ελεγκτής προβολής μοντέλου σε java | 8 |
3 | BBB | ένας |
3 | CCC | 7 |
Με αυτόν τον τρόπο μπορείτε να χρησιμοποιήσετε το SQL PIVOT και το UNPIVOT. Με αυτό, καταλήγουμε σε αυτό το άρθρο. Ελπίζω να καταλάβατε, πώς να χρησιμοποιήσετε το SQL. Εάν θέλετε να μάθετε περισσότερα για MySQL και γνωρίστε αυτήν τη σχεσιακή βάση δεδομένων ανοιχτού κώδικα και, στη συνέχεια, ρίξτε μια ματιά στη δική μας που έρχεται με ζωντανή εκπαίδευση με καθοδήγηση εκπαιδευτή και πραγματική εμπειρία έργου. Αυτή η εκπαίδευση θα σας βοηθήσει να κατανοήσετε τη MySQL σε βάθος και να σας βοηθήσει να επιτύχετε την εξουσία πάνω στο θέμα.
Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του άρθρου σχετικά με το SQL Pivot και θα επικοινωνήσω μαζί σας.