SQLServer行列转换 Pivot UnPivot 动态实现

SQLServer行列转换 Pivot UnPivot 动态实现,第1张

概述PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) )   UNPIVOT用于将列明转为列

PIVOT用于将列值旋转为列名(即行转列),在sql Server 2000可以用聚合函数配合CASE语句实现

PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P

完整语法:

table_source

PIVOT(

聚合函数(value_column

FOR pivot_column

IN(<column_List>)

)

 

UNPIVOT用于将列明转为列值(即列转行),在sql Server 2000可以用UNION来实现

UNPIVOT(

value_column

 

注意:PIVOT、UNPIVOT是sql Server 2005 的语法,使用需修改数据库兼容级别

 在数据库属性->选项->兼容级别改为   90


4、使用sql Server 2005静态sql

select*fromtb pivot(max(分数)for课程in(语文,数学,物理))a

5使用sql Server 2005动态sql

--使用stuff()

declare@sqlvarchar(8000)

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

select@sql=@sql+','+课程fromtbgroupby课程--变量多值赋值

set@sql=stuff(@sql,1,'')--去掉首个','

set@sql='select * from tb pivot (max(分数) for课程in ('+@sql+'))a'

exec(@sql)

--或使用isnull()

–-获得课程集合

select@sql=isnull(@sql+',','')+课程fromtbgroupby课程           

exec(@sql)

总结

以上是内存溢出为你收集整理的SQLServer行列转换 Pivot UnPivot 动态实现全部内容,希望文章能够帮你解决SQLServer行列转换 Pivot UnPivot 动态实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1159488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存