العلائقية تخزين كميات ضخمة من البيانات في شكل جداول. يمكن أن تحتوي هذه الجداول على أي عدد من الصفوف والأعمدة. ولكن ، ماذا لو كان عليك تغيير البيانات على مستوى الصف إلى بيانات عمودية؟ حسنًا ، في هذه المقالة حول SQL Pivot ، سأوضح لك كيف يمكنك تحويل الصفوف إلى عمود في SQL Server.
سيتم تناول الموضوعات التالية في هذه المقالة:
ما هو PIVOT في SQL؟
يتم استخدام PIVOT لتدوير قيمة الجدول عن طريق تحويل القيم الفريدة لعمود واحد إلى أعمدة متعددة. يتم استخدامه لتدوير الصفوف إلى قيم الأعمدة وتشغيل التجميعات عند الحاجة إلى قيم العمود المتبقية.
من ناحية أخرى ، يتم استخدام UNPIVOT لتنفيذ العمليات المعاكسة. لذلك ، يتم استخدامه لتحويل أعمدة جدول معين إلى قيم أعمدة.
الانتقال في هذه المقالة ، دعونا نفهم بناء جملة SQL Pivot.
بناء الجملة:
حدد اسم العمود غير المحوري ، [اسم العمود المحوري الأول] AS ColumnName ، [اسم العمود المحوري الثاني] AS ColumnName ، [اسم العمود المحوري الثالث] AS ColumnName ، ... [Last Pivoted ColumnName] AS ColumnName FROM (استعلام SELECT الذي ينتج البيانات) AS [الاسم المستعار للاستعلام الأولي] PIVOT ([دالة التجميع] (ColumName) لـ [ColumnName الخاص بالعمود الذي ستصبح قيمه رؤوس أعمدة] IN ([اسم العمود المحوري الأول] ، [اسم العمود المحوري الثاني] ، [اسم العمود المحوري الثالث] ... [الأخير عمود محوري])) AS [اسم مستعار للجدول المحوري]
هنا،يمكنك أيضًا استخدام ملف عبارة ORDER BY لفرز القيم إما بترتيب تصاعدي أو تنازلي. الآن بعد أن عرفت ما هو PIVOT في SQL وصياغته الأساسية ، دعنا نتقدم ونرى كيفية استخدامه.
أمثلة
من أجل فهمك بشكل أفضل ، سأفكر في الجدول التالي لشرح جميع الأمثلة.
جدول الموردين:
واسم المورد | DaysofManufacture | كلفة | هوية الزبون | معرف الشراء |
واحد | 12 | 1230 | أحد عشر | P1 |
2 | واحد وعشرين | 1543 | 22 | P2 |
3 | 32 | 2. 3. 4. 5 | أحد عشر | ص 3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | ص 3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | أحد عشر | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | أحد عشر | ص 3 |
10 | 56 | 6832 | 33 | P2 |
دعنا نكتب استعلامًا بسيطًا لاسترداد متوسط التكلفة التي ينفقها كل عميل.
حدد CustomerID ، AVG (التكلفة) كمتوسط تكلفة العميل من مجموعة الموردين حسب معرف العميل
انتاج:
هوية الزبون | متوسط تكلفة العميل |
أحد عشر | 1787.75 |
22 | 4654 |
33 | 5238.33 |
الآن ، دعنا نقول أننا نريد أن نركز على الجدول أعلاه. هنا ، ستصبح قيم العمود معرف العميل رؤوس الأعمدة.
- إنشاء جدول محوري بصف واحد وثلاثة أعمدة حدد 'AverageCostofCustomer' AS Cost_According_To_Customers ، [11] ، [22] ، [33] من (حدد معرف العميل ، التكلفة من الموردين) AS SourceTable PIVOT (AVG (التكلفة) لمعرف العميل في ( [11] ، [22] ، [33])) AS PivotTable
انتاج:
التكلفة_حساب_العملاء | أحد عشر | 22 | 33 |
متوسط تكلفة العميل | 1787.75 | 4654 | 5238.33 |
ملحوظة: عندما تستخدم ملفات وظائف مجمعة باستخدام PIVOT ، لا يتم اعتبار القيم الخالية أثناء حساب التجميع.
حسنًا ، كان هذا مثالًا أساسيًا ، لكن دعونا الآن نفهم كيف يعمل بند PIVOT.
عمل شرط PIVOT
كما يمكنك الرجوع أعلاه ، لإنشاء PIVOT TABLE ، عليك اتباع الخطوات التالية:
- حدد أعمدة للتمحور
- بعد ذلك ، حدد جدول مصدر.
- قم بتطبيق عامل التشغيل PIVOT ، ثم استخدم الوظائف التجميعية.
- اذكر القيم المحورية.
حدد أعمدة للتمحور
في البداية ، يتعين علينا تحديد الحقول التي سيتم تضمينها في نتائجنا. في مثالنا ، نظرت في عمود AverageCostofCustomer في الجدول المحوري. ثم أنشأنا ثلاثة أعمدة أخرى برؤوس الأعمدة 11 و 22 و 33. مثال-
حدد 'AverageCostofCustomer' AS Cost_According_To_Customers، [11]، [22]، [33]
حدد جدول المصدر
بعد ذلك ، يجب عليك تحديد عبارة SELECT التي ستعيد البيانات المصدر للجدول المحوري. في مثالنا ، نعيد معرف العميل والتكلفة من جدول الموردين.
(حدد معرف العميل ، التكلفة من الموردين) AS SourceTable
قم بتطبيق عامل التشغيل PIVOT ، ثم استخدم الوظائف التجميعية
بعد ذلك ، يجب عليك تحديد الوظيفة التجميعية لاستخدامها أثناء إنشاء الجدول المحوري. في مثالنا ، استخدمت وظيفة AVG لحساب متوسط التكلفة.
المحور (AVG (التكلفة))
اذكر القيم المحورية
أخيرًا ، يجب عليك ذكر القيم التي يجب تضمينها في الجدول المحوري الناتج. سيتم استخدام هذه القيم كعناوين أعمدة في الجدول المحوري.
لـ CustomerID IN ([11] ، [22] ، [33])) AS PivotTable
هذه هي الطريقة التي يعمل بها مشغلو PIVOT. الانتقال في هذه المقالة حول SQL PIVOT ، دعونا نفهم مدى اختلافها عن SQL UNPIVOT.
SQL UNPIVOT
يتم استخدام مشغل SQL UNPIVOT لتنفيذ العملية المعاكسة لعملية PIVOT. يتم استخدامه لتدوير بيانات العمود إلى بيانات على مستوى الصف. إن بناء جملة UNPIVOT يشبه صيغة PIVOT. الاختلاف الوحيد هو أنه يجب عليك استخدام ملف ' UNPIVOT ' .
مثال:
دعونا ننشئ جدولاً بالأعمدة معرف المورد ، AAA ، BBB ، و CCC. أيضا ، أدخل بعض القيم.
إنشاء جدول عينات العينات (معرف المورد int ، AAA int ، BBB int ، CCC int) انتقل إلى INSERT INTO sampletable VALUES (1،3،5،6) أدخل قيم العينات (2،9،2،8) أدخل قيم العينات (3 ، 8،1،7) انطلق
انتاج:
واسم المورد | AAA | BBB | CCC |
واحد | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | واحد | 7 |
الآن ، دعنا نقول ، نريد إلغاء تنشيط الجدول. للقيام بذلك ، يمكنك الرجوع إلى الكود التالي:
حدد معرف المورد ، العملاء ، المنتجات من (حدد المورد ، AAA ، BBB ، CCC من العينات) ع UNPIVOT (المنتجات للعملاء في (AAA ، BBB ، CCC)) كمثال GO
واسم المورد | العملاء | منتجات |
واحد | AAA | 3 |
واحد | BBB | 5 |
واحد | CCC | 6 |
2 | AAA | 9 |
2 | BBB | 2 |
2 | CCC | 8 |
3 | AAA | 8 |
3 مجموعة من العناصر في جافا | BBB | واحد |
3 | CCC | 7 |
هكذا يمكنك استخدام SQL PIVOT و UNPIVOT. بهذا ننتهي من هذا المقال. أتمنى أن تفهم كيفية استخدام SQL. إذا كنت ترغب في معرفة المزيد عن MySQL وتعرف على قاعدة البيانات الارتباطية مفتوحة المصدر هذه ، ثم تحقق من الذي يأتي مع تدريب مباشر بقيادة مدرب وخبرة مشروع واقعية. سيساعدك هذا التدريب على فهم MySQL بعمق ويساعدك على تحقيق إتقان الموضوع.
لديك سؤال لنا؟ يرجى ذكرها في قسم التعليقات في هذه المقالة على SQL Pivot وسأعاود الاتصال بك.