2005的行列转换
2017-04-02 18:36
351 查看
2005的行列转换:
create table ta(编号 int,人员 varchar(5), 年份 int,月份 int ,[1号] varchar(5), [2号] varchar(5),[3号] varchar(5),[4号] varchar(5))
insert ta select 1, '张三',2006, 1, '正常', '迟到', '迟到', '事假'
union all select 2, '张三', 2006, 2, '迟到', '事假', '正常', '正常'
union all select 3, '李四', 2006, 3, '正常', '正常', '正常', '正常'
union all select 4, '王五', 2007, 5, '正常', '正常','正常', '正常'
2005的列转行再行转列:
declare @sql varchar(4000)
select @sql=isnull(@sql+',','')+quotename(Orders)
from ta
unpivot
(orders for [原因] in([1号],[2号],[3号],[4号])
)as tb group by Orders
--print @sql
set @sql='select 编号,人员,年份,月份,'+@sql+
'from (
select 编号,人员,年份,月份,原因,Orders
from ta
unpivot
(orders for [原因] in([1号],[2号],[3号],[4号])
)as tb
)tmp
pivot
(count(原因) for Orders in('+@sql+')
)tmp2'
--print @sql
exec(@sql)
编号 人员 年份 月份 迟到 事假 正常
----------- ----- ----------- ----------- ----------- ----------- -----------
1 张三 2006 1 2 1 1
2 张三 2006 2 1 1 2
3 李四 2006 3 0 0 4
4 王五 2007 5 0 0 4
(4 行受影响)
http://blog.csdn.net/roy_88/article/details/1509413
create table ta(编号 int,人员 varchar(5), 年份 int,月份 int ,[1号] varchar(5), [2号] varchar(5),[3号] varchar(5),[4号] varchar(5))
insert ta select 1, '张三',2006, 1, '正常', '迟到', '迟到', '事假'
union all select 2, '张三', 2006, 2, '迟到', '事假', '正常', '正常'
union all select 3, '李四', 2006, 3, '正常', '正常', '正常', '正常'
union all select 4, '王五', 2007, 5, '正常', '正常','正常', '正常'
2005的列转行再行转列:
declare @sql varchar(4000)
select @sql=isnull(@sql+',','')+quotename(Orders)
from ta
unpivot
(orders for [原因] in([1号],[2号],[3号],[4号])
)as tb group by Orders
--print @sql
set @sql='select 编号,人员,年份,月份,'+@sql+
'from (
select 编号,人员,年份,月份,原因,Orders
from ta
unpivot
(orders for [原因] in([1号],[2号],[3号],[4号])
)as tb
)tmp
pivot
(count(原因) for Orders in('+@sql+')
)tmp2'
--print @sql
exec(@sql)
编号 人员 年份 月份 迟到 事假 正常
----------- ----- ----------- ----------- ----------- ----------- -----------
1 张三 2006 1 2 1 1
2 张三 2006 2 1 1 2
3 李四 2006 3 0 0 4
4 王五 2007 5 0 0 4
(4 行受影响)
http://blog.csdn.net/roy_88/article/details/1509413
相关文章推荐
- SQL Server 2005之PIVOT/UNPIVOT行列转换(转)
- Sql Server函数大全(二)---SQL Server 2005 中行列转换(Pivot 和 UNPivot的使用)
- Sql Server函数大全(二)---SQL Server 2005 中行列转换(Pivot 和 UNPivot的使用)
- SQL 2005 行列转换 实例(函数PIVOT&UNPIVOT)
- MSSQL2005行列转换(使用PIVOT and UNPIVOT)
- sql2005 行列转换
- 在SQL Server 2005中实现表的行列转换(转)
- Sql server 2005中实现表的行列转换
- SQL Server 2005之PIVOT/UNPIVOT行列转换(行转列、列转行)
- 在SQL Server 2005中实现表的行列转换
- 【转载】在SQL Server 2005中实现表的行列转换
- SQL Server 2005之PIVOT/UNPIVOT行列转换(转)
- SQL Server 2005之PIVOT/UNPIVOT行列转换(转)
- SQL Server 2005之PIVOT/UNPIVOT行列转换(转)
- SQL Server 2005 中行列转换(Pivot 和 UNPivot的使用)
- SQL 行列转换,sql2000和2005--多行转一行
- sql2005 行列转换的例子
- SQL Server 2005之PIVOT/UNPIVOT行列转换
- 2005的行列转换
- SQL2005 行列转换(巩固篇)