هذا ما يسمى بـ 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: