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 行受影响)

  • 相关阅读:
    css居中问题(转)
    Request.ServerVariables 各个参数的用法
    html5 画个球碰撞
    递归生成json
    AspNetPager分页结合存储过程的用法
    sql+aspnetpager+查询功能
    求1+2+……+n
    几种排序的比较 bitmapsort,qsort,set
    利用两个栈,反转其中一个栈的元素
    进程间通信(IPC, Inter Process Communication)读书笔记
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463112.html
Copyright © 2011-2022 走看看