SQL Pivot - تعرف على كيفية تحويل الصفوف إلى أعمدة



تعتبر هذه المقالة حول SQL Pivot دليلاً شاملاً حول كيفية تحويل البيانات على مستوى الصف إلى بيانات عمودية مع أمثلة متعمقة.

العلائقية تخزين كميات ضخمة من البيانات في شكل جداول. يمكن أن تحتوي هذه الجداول على أي عدد من الصفوف والأعمدة. ولكن ، ماذا لو كان عليك تغيير البيانات على مستوى الصف إلى بيانات عمودية؟ حسنًا ، في هذه المقالة حول 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 كلفة هوية الزبون معرف الشراء
واحد121230أحد عشرP1
2واحد وعشرين154322P2
3322. 3. 4. 5أحد عشرص 3
414876522P1
542345233ص 3
631543133P1
7412342أحد عشرP2
854365422P2
9331234أحد عشرص 3
1056683233P2

دعنا نكتب استعلامًا بسيطًا لاسترداد متوسط ​​التكلفة التي ينفقها كل عميل.

حدد CustomerID ، AVG (التكلفة) كمتوسط ​​تكلفة العميل من مجموعة الموردين حسب معرف العميل

انتاج:

هوية الزبون متوسط ​​تكلفة العميل
أحد عشر1787.75
224654
335238.33

الآن ، دعنا نقول أننا نريد أن نركز على الجدول أعلاه. هنا ، ستصبح قيم العمود معرف العميل رؤوس الأعمدة.

- إنشاء جدول محوري بصف واحد وثلاثة أعمدة حدد 'AverageCostofCustomer' AS Cost_According_To_Customers ، [11] ، [22] ، [33] من (حدد معرف العميل ، التكلفة من الموردين) AS SourceTable PIVOT (AVG (التكلفة) لمعرف العميل في ( [11] ، [22] ، [33])) AS PivotTable

انتاج:

التكلفة_حساب_العملاء أحد عشر2233
متوسط ​​تكلفة العميل 1787.7546545238.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
واحد356
2928
38واحد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 وسأعاود الاتصال بك.