有同學問了個比較典型行列轉換的問題,想想,解答如下:數據庫有一張表:

是個公司采購表,想轉化成如下報表,顯示每個公司各采購了些什么產品:

哪些公司采購哪些產品是不確定的,所以報表的列有哪幾項是不確定的,我想了很久也沒什么好方法,請問有辦法嗎?
解題思維步驟:
1 declare @sql varchar(8000)--聲明一個字符串變量2 set @sql='select CompanyName,'--開始設置語句3 --------動態生成語句begin(開始轉成列)-----4 select @sql=@sql+'sum(case when ProductName='''+ProductName+''' then num else 0 end)['+ProductName+'],' 5 from (select distinct top 100 percent ProductName from Orders order by ProductName)a6 --------動態生成語句 end--------------------7 set @sql =left(@sql,len(@sql)-1)+' from (select CompanyName,ProductName,COUNT(*)as numfrom dbo.Orders group by ProductName,CompanyName)a group by CompanyName'8 print @sql --打印輸出最終執行的SQL9 exec(@sql)--執行SQL字符串新聞熱點
疑難解答