• SQL Server中行列转换 Pivot UnPivot


    SQL Server中行列转换 Pivot UnPivot

    PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现

    PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P

    完整语法:

    table_source

    PIVOT(

    聚合函数(value_column

    FOR pivot_column

    IN(<column_list>)

    )

    UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现

    完整语法:

    table_source

    UNPIVOT(

    value_column

    FOR pivot_column

    IN(<column_list>)

    )

    注意:PIVOT、UNPIVOT是SQL Server 2005 的语法,使用需修改数据库兼容级别
     
    在数据库属性->选项->兼容级别改为   90

    create table test2(id varchar(10),count int,name varchar(10),riqi varchar(20))

    insert into test2
    select 'AA',3,'安贞','2012年3月'

    union all
    select 'BB',5,'安贞','2012年4月'

     

    declare @sql varchar(8000)
    set @sql=''  --初始化变量@sql
    select @sql=@sql+','+'['+riqi+']' from test2 group by riqi--变量多值赋值 要转换为列名的字段 如果为数字用“[]”号分隔

    set @sql=stuff(@sql,1,1,'')--去掉首个','
    set @sql='select * from test2 pivot (max(ts_count) for riqi in ('+@sql+'))pvt'
    exec(@sql)

  • 相关阅读:
    SCRUM第一天
    第八周总结
    第7周总结
    团队项目nabcd
    人月神话1
    课堂练习之四则运算
    第六周总结
    Storm Grouping —— 流分组策略
    抓取网页内容生成Kindle电子书(转)
    浅析PageRank算法(转)
  • 原文地址:https://www.cnblogs.com/suzh/p/2461498.html
Copyright © 2020-2023  润新知