zoukankan      html  css  js  c++  java
  • PIVOT&UNPIVOT

    如果是家电销售员,那么可能需要统计每月日销售的彩电、冰箱、空调...最大值、最小值、平均值等

    如果你是耳鼻喉科医生,那么可能需要统计月度年度日接客咽炎、喉炎、鼻炎...最大值、最小值、平均值等

    如果你是程序媛,那么可能需要统计月度日处理bug、新增功能、支援...等类别问题量的最大值、最小值、平均值等

    那么诸如此类问题,需要一行显示一人负责所有相关类别数值时,就是pivot派上用场之时

    这类数据结构一般为

    create table objecttable(id int primary key identity(1,1),userno varchar(10),calendar date,type varchar(20),num int)

    目标输出数据结构

    userno type num calendar

    ---------- ---------- -----------

    userA 类别1 1      date1

    userB 类别2 3  date2

    userC 类别3 5  date3

    select userno,max(num) maxnum,type,convert(varchar(7),calendar,120) monthly

    into #

    from objecttable group by userno,convert(varchar(7),calendar,120),type

    select  * from # pivot(max(maxnum) for type in(类别1,类别2,类别3)) x

    userno   monthly   类别1   类别2   类别3

    -----------------------------------------------------------
    userA    2016-06   10     11      15
    userB    2016-06   6       3     8
    userC    2016-06   9       2     7

    附PIVOT语法

    SELECT * FROM TB PIVOT(聚合函数(列) FOR 列 in (…) ) tt

    UNPIVOT相反操作

    select  * into #rlst from # pivot(max(maxnum) for type in(类别1,类别2,类别3)) x


    select userno,monthly,type,num from #rlst unpivot(num for type in([类别1],[类别2],[类别3]))xx

    完整语法:

    select f1,f2,typename,num fom tb

    UNPIVOT(

    value_column

    FOR pivot_column

    IN(<column_list>)

    )

  • 相关阅读:
    css学习记录(css元素类型)
    一个面向对象的js问题 大家帮忙看看
    css选择器记录
    css学习记录
    如何进行高效JavaScript单元测试
    js拖动库介绍
    PHP 方法记录
    jquery学习笔记(一)
    windows8 后台传递下载
    .NET Framework 4.5 RC 更新
  • 原文地址:https://www.cnblogs.com/jeffry/p/5629340.html
Copyright © 2011-2022 走看看