zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    「专题总结」后缀自动机
    「专题总结」回文自动机
    「专题总结」后缀数组
    2.11毕设进度
    2.10毕设进度
    2.09毕设进度
    2.08毕设进度
    2.07毕设进度
    2.06毕设进度
    2.05毕设进度
  • 原文地址:https://www.cnblogs.com/suzh/p/2461498.html
Copyright © 2011-2022 走看看