zoukankan      html  css  js  c++  java
  • PIVOT

    一、一列

    SELECT MM,[2016-06],[2016-07],[2016-08],[2016-09],[2016-10],[2016-11],[2016-12]
    FROM (SELECT 'TEU/CBM' AS MM,cbm,khrq FROM #tmp_result) AS ss 
        PIVOT ( 
    	    sum(cbm) FOR khrq IN ([2016-06],[2016-07],[2016-08],[2016-09],[2016-10],[2016-11],[2016-12]) 
    	   ) AS pp 
    -- ****
    -- 等同
    -- ****
    SELECT * 
    FROM (SELECT 'TEU/CBM' AS MM,cbm,khrq FROM #tmp_result) AS ss     PIVOT (     sum(cbm) FOR khrq IN ([2016-06],[2016-07],[2016-08],[2016-09],[2016-10],[2016-11],[2016-12])    ) AS pp

    二、多列(列固定)  

     思路:CMB union all USD union RMB

    SELECT * FROM (SELECT 'TEU/CBM' AS MM,cbm,khrq FROM #tmp_result) AS ss
             PIVOT (
                 
    sum(cbm) FOR khrq IN ([2016-06],[2016-07],[2016-08],[2016-09],[2016-10],[2016-11],[2016-12])
                 )
    AS pp union all SELECT * FROM (SELECT '利润/USD' AS MM,cbm,khrq FROM #tmp_result) AS ss
             PIVOT (
                 
    sum(usd) FOR khrq IN ([2016-06],[2016-07],[2016-08],[2016-09],[2016-10],[2016-11],[2016-12])
                 )
    AS pp union all SELECT * FROM (SELECT '利润/RMB' AS MM,cbm,khrq FROM #tmp_result) AS ss
             PIVOT (
                 sum(rmb) FOR khrq IN ([2016-06],[2016-07],[2016-08],[2016-09],[2016-10],[2016-11],[2016-12])
                 )
    AS pp

    二、多列(列 bu 不 固定)

    create table #tmp
    (ID int,Item1 varchar(5),Number1 int,Number2 int)
     
    insert into #tmp
     select 1,'A',10,1 union all
     select 1,'B',5,3 union all
     select 1,'A',3,2 union all
     select 2,'A',5,3 union all
     select 2,'B',1,2 union all
     select 2,'B',2,2
     
    -- select * FROM #tmp
    select ID,Item1+'('+c+')' 'c',v
    into #tmp2 from
     (select ID,Item1,sum(Number1) 'Number1',sum(Number2) 'Number2'
      from #tmp
      group by ID,Item1) a unpivot(v for c in([Number1],[Number2])) u
    -- select * FROM #tmp2

    select ID,[A(Number1)],[A(Number2)],[B(Number1)],[B(Number2)] 
    from (SELECT * FROM #tmp2) b pivot(max(v) for c in([A(Number1)],[A(Number2)],[B(Number1)],[B(Number2)])) p

    
    
  • 相关阅读:
    learning java ATW ScrollPane
    SQLSERVER2008R2正确使用索引
    SQL Server 数据操作
    jar war ear
    浅谈SQL Server中的三种物理连接操作
    SqlServer在视图上创建索引的条件
    Sqlserver 查看视图或者存储过程定义
    过滤器配置
    SpringMVC架构
    N+1问题其实应该叫做1+N 问题
  • 原文地址:https://www.cnblogs.com/MissRabbit/p/6668685.html
Copyright © 2011-2022 走看看