SQL2005\2008行转列脚本编写

来源:互联网 发布:淘宝延长收货 花呗 编辑:程序博客网 时间:2024/06/05 05:25

----使用stuff()

DECLARE @sql VARCHAR(8000)

SET @sql=''  --初始化变量 @sql

SELECT @sql= @sql+',' + QUOTENAME(日期) FROM tb GROUP BY 日期 --变量多值赋值

SET @sql= STUFF(@sql,1,1,'')--去掉首个','

SET @sql='SELECT * FROM tb pivot( MAX(金额) FOR 日期 IN ('+@sql+'))a'

PRINT @sql

exec(@sql)


-----或使用isnull()

DECLARE @s NVARCHAR(4000) 

--获得课程集合

SELECT @s = ISNULL(@s + ',', '') +  QUOTENAME(日期)  
FROM  (select distinct 日期 from tb) as A ---列名不要重复  
 
Declare @sql NVARCHAR(4000)  
SET @sql='  
 select r.* from tb
pivot  
(  
max(金额)  
for 日期 in ('+@s+')  
) as r'  
   

EXEC( @sql)



变成:


0 0