كيفية نقل بيانات خادم 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