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

  • 相关阅读:
    java面向对象第六章
    java面向对象第四章
    java面向对象第三章
    java面向对象第二章
    java面向对象第一章
    java基础(9)
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    最小堆解决TOP N问题
    kafka相关
    golang 反射获取参数对应类型原始值
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463112.html
Copyright © 2011-2022 走看看