在做報表的時候,通常會遇到要把查詢出的數據做為列頭顯示,但是查詢出來的數據會根據條件的不同查詢出的數據也就不同(動態列),那麼列頭也不同。 這個時候就需要把查詢出數據的行轉換成列。 一、將查詢出來的數據轉換成列頭 declare @Str varchar(500); Create Table #t_ ...
在做報表的時候,通常會遇到要把查詢出的數據做為列頭顯示,但是查詢出來的數據會根據條件的不同查詢出的數據也就不同(動態列),那麼列頭也不同。
這個時候就需要把查詢出數據的行轉換成列。
一、將查詢出來的數據轉換成列頭
declare @Str varchar(500);
Create Table #t_Data(ID int identity(1,1),DeptID int,DeptName varchar(50),TotalAmountYS money,TotalAmountZY money,TotalAmountZX money);
Set @str=(Select Stuff((SELECT ','+ltrim(a.YWTypeName)+' money'
From
(select YWTypeName,GKYWTypeID from tbgYearSourceGKSplitList where SplitYears=2016 group by YWTypeName,GKYWTypeID)
a
For XML Path('')),1,1,''));
Set @str='Alter Table #t_Data Add '+ @str;
Exec(@Str);
select * from #t_Data
二、這裡的列是中文的,你可以拼接成英文的,就看你想要什麼名字了。
三、這裡是用的是臨時表查詢數據,那麼資料庫查詢出的數據肯定要加到臨時表中,方法是用游標。
http://www.cnblogs.com/shiyufeng/p/5919103.html