关于MS SQL中行转列做法
来源:互联网 发布:网络进货渠道有哪些 编辑:程序博客网 时间:2024/05/16 04:49
在做报表时,我们经常会遇到行转列的问题,在MS SQL2000时代,一般都是用CASE语句,对数据做离散处理,在SQL 2005里新增了PIVOT关键字,下面用一个例子来说明该关键字的用法。
现在有表TABLEA,表结构以及内容如下
现在要将A列的数据做列头
SELECT A1,A2,A3,A4,A5 --此处列出的值将做为列头,必须与下面的条件保持一致
FROM TableA
PIVOT
(
sum(B) --这里写需要做为统计尺度的字段,可以用SUM,AVG,MAX等计算函数
FOR A IN ('A1','A2','A3','A4','A5') --这里列出需要作为列头A字段的值
) AS pvt
这样就完成了一个简单的行转列的查询,但是这个查询中的维度列是写死的,如果要维度也是动态的,这需要用到另一个技巧,下面就简单介绍一下:
SELECT STUFF(
(
SELECT
', [' + convert(varchar, s.A) + ']'
FROM (
SELECT A
FROM TableA) s
FOR XML PATH('')), 1, 1, ''
)
这段SQL能把表中的字段值合并成一个以逗号相隔得字符串,这样的话我们可以把这段SQL做成一个函数,就可以实现动态的行专列查询了。
- 关于MS SQL中行转列做法
- SQL Server 中行转列 列转行
- SQL Server中行转列问题
- SQL中行转列的问题!
- SQL语句中行转列案例
- sql语句中行转列总结
- sql中行列转换
- sql中行列互换
- sql表关于列转行的做法
- SQL 数据库中行转列,和列转行
- SQLServer中行列转换SQL
- SQL Server中行列转换
- sql中行列互换问题
- SQL Server中行列转换
- SQL Server中行列转换
- SQL2005中行转列
- oracle中行转列
- 【转】SQL Server中行列转换 Pivot UnPivot
- 自绘控件里实现控件无效区域透明效果
- dhcp sendmail tcpwrapper
- 比尔•盖茨招聘员工的故事
- Linux 创建文件系统及挂载文件系统流程详解
- 分享:Oracle11gR2 远程不能连接1521端口
- 关于MS SQL中行转列做法
- 用户凭什么跟你走
- 进程间通信之共享内存篇
- 互联网那些事儿——周鸿祎的榴弹炮
- JS获取FCK的值
- mssql sql语句简明教程
- 项目管理有感之需求调研 (转)
- jQuery.validate 中文API
- 无聊的编码