سعيد بو عبد الله نشر 11 سبتمبر 2015 أرسل تقرير نشر 11 سبتمبر 2015 أتوفر على جدول في قاعدة بيانات Sql كالتالي:dbsize (id, database_name, database_size, insert_date) وعند عمل إستعلام Select أحصل على : - 1 dbname1 1000 1/1/1900 - 2 dbname2 2000 1/1/1900 - 3 dbname3 3000 1/1/1900 - 4 dbname1 1200 1/2/1900 - 5 dbname2 2200 1/2/1900سؤالي هو إذا ما أردت التغيير في شكل استخراج المعلومات وتغيير أماكن الحقول لتصبح يهذا الشكل:- insert_date dbname1 dbname2 dbname3 - 1/1/1900 1000 2000 3000 - 1/2/1900 1200 2200كيفي يمكنني الحصول على هذه النتيجة؟ وما جملة الإستعلام التي يتوجب علي كتابتها لذلك؟ اقتباس
0 E.Nourddine نشر 11 سبتمبر 2015 أرسل تقرير نشر 11 سبتمبر 2015 هذا ما يسمى بـ pivot أي أنك تُغيّر من الشكل الطبيعي لظهور نتائج الجداول وتظهر بشكل مغاير تماما وكأنها جداول أخرى، حيث تستعمل هذه التقنية عند نشر احصائيات محددة، بشكل معين وفي حالات أخرى، وفي حالتك هذه إليك الحل:DECLARE @ColumnNames nvarchar(MAX) = '' DECLARE @SQL nvarchar(MAX) = '' SELECT @ColumnNames += QUOTENAME( database_name) + ',' from (select distinct database_name from dbo.dbsize) t SET @ColumnNames = LEFT(@ColumnNames, LEN(@ColumnNames)-1) SET @SQL = 'SELECT * FROM ( SELECT database_name, COUNT(*) AS cnt FROM dbsize GROUP BY database_name) AS basedata PIVOT ( SUM(cnt) FOR database_name IN (' +@ColumnNames + ')) AS PivotTable' EXECUTE sp_executeلاحظ جيدا استعمال الكلمةPIVOT .يمكنك الإطلاع على المزيد حول هذا الموضوع، من خلال الموقع الرسمي لـ SQLServer: اقتباس
السؤال
سعيد بو عبد الله
أتوفر على جدول في قاعدة بيانات Sql كالتالي:
وعند عمل إستعلام Select أحصل على :
سؤالي هو إذا ما أردت التغيير في شكل استخراج المعلومات وتغيير أماكن الحقول لتصبح يهذا الشكل:
كيفي يمكنني الحصول على هذه النتيجة؟ وما جملة الإستعلام التي يتوجب علي كتابتها لذلك؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.