zoukankan      html  css  js  c++  java
  • 2005的行列转换

    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

  • 相关阅读:
    时间戳转换
    DIV背景半透明文字不半透明的样式
    转 JavaScript中判断对象类型的种种方法
    AllJoyn 了解
    Oracle 跨库 查询 复制表数据
    SQL Server 跨数据库查询
    Jersey RESTful Web服务
    【项目管理】项目启动阶段 -- 制定项目章程
    多项目同时进行如何做好进度管理?
    svn版本管理
  • 原文地址:https://www.cnblogs.com/railgunman/p/6659544.html
Copyright © 2011-2022 走看看