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

كيفية تبديل البيانات في SQL Server باستخدام عامل PIVOT؟

تم النشر بتاريخ 2024-12-23
تصفح:584

How to Transpose Data in SQL Server Using the PIVOT Operator?

كيفية نقل بيانات خادم SQL باستخدام PIVOT

يتيح لك عامل PIVOT في SQL Server تحويل الصفوف إلى أعمدة، وتحويل البيانات من من النموذج الموجه عموديا إلى النموذج الموجه أفقيا. يمكن أن يكون ذلك مفيدًا عند السعي لتلخيص البيانات استنادًا إلى سمات متعددة.

بيانات نموذجية والمخرجات المطلوبة

خذ بعين الاعتبار مجموعة البيانات الأولية التالية:

SELECT Name1، Name2، القيمة من mytable الاسم 1 | الاسم2 | قيمة ------- ------- ------ أ | ص1 | 1 أ | ص2 | 1 أ | ص3 | 2 ب | ص1 | 3 ب | ص2 | 1 ب | ص4 | 1
SELECT Name1, Name2, Value FROM mytable

Name1 | Name2 | Value
------- ------- ------
A      | P1     | 1
A      | P2     | 1
A      | P3     | 2
B      | P1     | 3
B      | P2     | 1
B      | P4     | 1
الإخراج المطلوب هو تدوير البيانات بحيث يقوم عامل PIVOT بتحويل قيم عمود Name1 إلى رؤوس أعمدة، ويتم تلخيص القيم من عمود القيمة بواسطة عمود Name2.

نقل البيانات باستخدام PIVOT في SQL Server 2005بالنسبة لـ SQL Server 2005، يمكن استخدام عامل التشغيل PIVOT فيما يلي الطريقة:

أعلن @cols VARCHAR(1000) أعلن @sqlquery VARCHAR(2000) SELECT @cols = STUFF(( SELECT مميز '،' QuoteName([Name1]) من myTable لـ XML PATH('') ), 1, 1, '') SET @sqlquery = 'SELECT * FROM (حدد الاسم 2، الاسم 1، القيمة من قاعدة myTable). المحورية (مجموع (القيمة) لـ [الاسم1] IN ('@cols')) كمحور نهائي' EXECUTE ( @sqlquery )

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ','   QuoteName([Name1])
                        FROM myTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Name2, Name1, Value
       FROM myTable ) base
       PIVOT (Sum(Value) FOR [Name1]
       IN ('   @cols   ')) AS finalpivot'

EXECUTE ( @sqlquery )

P1 P2 P3 P4 ------- ------- ------- ------- 1 1 2 لاغية 3 1 لاغية 1

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

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

Copyright© 2022 湘ICP备2022001581号-3