数据如下: Table1 (表名)
Code_No, Type, Money (字段名)
1、西瓜、现金、0.5
2、西瓜、IC卡、1.5
3、黄瓜、现金、1.0
4、黄瓜、IC卡、2.0
5、木瓜、现金、2.5
6、木瓜、IC卡、3.0
现在要制做如下格式的报表:
西瓜、黄瓜、木瓜
现金 0.5 1.0 2.5
IC卡 1.5 2.0 3.0
如果还有其它商品类型的话,列头还要动态增加
過程如下:
select Code_No,Type,Sum(Money) as Total_Scalar
into #T
from Table1 Group by Code_No,Type
Create #Temptab(Add_ID int IDENTITY (1, 1) NOT NULL,Type varchar(50) Null) --返回表
insert into #Temptab(Type) select Type from #T
declare @Code_No varchar(50),@Type varchar(50),@Total_Scalar float
declare #MyCur cursor For Select Code_No,Type,Total_Scalar from #T
Open #MyCur
Fetch Next from #MyCur into @Code_No,@Type,@Total_Scalar
while @@fetch_status=0
begin
if not ( Exists(select Name from Syscolumns where Id in(select ID from Sysobjects where Name='#Temptab') and Name='A'+@Code_No) )
Exec(' Alter Table #Temptab add A'+@Code_No+' varchar(50) Null')
Exec(' Update #Temptab set A'+@Code_No+'='+@Total_Scalar+' where Type='+''''+@Type+'''')
Fetch Next from #MyCur into @Code_No,@Type,@Total_Scalar
end
Close #MyCur
Deallocate #MyCur
select * from #Temptab
Drop table #T
Drop table #Temptab
返加了如#Temptab結構的表結構做報表應不成問題了吧