"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحويل الأعمدة بكفاءة إلى صفوف في SQL Server؟

كيفية تحويل الأعمدة بكفاءة إلى صفوف في SQL Server؟

نشر في 2025-04-13
تصفح:591

How Can I Efficiently Convert Columns to Rows in SQL Server?

دليل داخلي لتحويل العمود في SQL Server

عند معالجة الجداول التي تحتوي على عدد كبير من الأعمدة المتري ، يعد تحويل هذه الأعمدة إلى صفوف مفيدًا جدًا لأغراض التحليل والإبلاغ. يتضمن هذا التحول إعادة بناء البيانات لإنشاء جداول جديدة مع مخططات مختلفة.

بيان مشكلة

فكر في بنية الجدول التالية:

[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]

الهدف هو تحويل هذه الأعمدة المتري إلى صفوف ، وبالتالي إنشاء جدول جديد مع المخطط التالي:

[ID] [EntityId] [IndicatorName] [IndicatorValue]
]]

الحل باستخدام unpivot

الحل الأنيق لإنجاز هذه المهمة هو الاستفادة من وظيفة unpivot. بناء جملة unpivot كما يلي:

UNPIVOT ([unpivot column] FOR [pivot column] IN ([pivot values]))

في هذا المثال ، يمثل العمود UNPIVOT قيمة المؤشر (على سبيل المثال ، "Iducator1" ، "Iducator2" ، إلخ) ، ويمثل العمود المحوري اسم العمود نفسه. يوضح الاستعلام التالي كيفية استخدام unpivot:

select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;

عن طريق إجراء هذا الاستعلام ، سيتم تحويل العمود المتري إلى صفوف وسيتم ملء الاسم والقيمة المتري مع العمود الجديد.

بدائل

بالإضافة إلى عدم البوبوت ، هناك طرق أخرى لتحويل الأعمدة إلى الصفوف:

  • تنطبق باستخدام Union All: تتضمن هذه الطريقة استخدام تطبيق Cross و Union جميعًا لتحديد كل اسم وقيمة متري.
  • تقاطع باستخدام القيم: يشبه الطريقة أعلاه ، ولكن يتم استخدام جملة القيم في التقاطع.
  • Dynamic SQL: للحالات التي تحتوي على عدد كبير من أعمدة المؤشرات ، يمكنك استخدام SQL الديناميكي لإنشاء عبارات الاستعلام تلقائيًا.

يعتمد اختيار الحل على الاحتياجات المحددة وإصدار SQL Server المستخدم.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3