zoukankan      html  css  js  c++  java
  • SQLServer pivot 行转列

    设计表如下

    --收入表
    CREATE TABLE income
    (
        inid INT PRIMARY KEY IDENTITY(1, 1),
        indate DATETIME, --时间
        intype VARCHAR(10),       -- 收入类型
        amount DECIMAL(18, 2) --金额
    )

    查询按年月,将收入类型从行转成列

     

    DECLARE  @sql varchar(8000) 
    
    --判断临时表是否存在,存在则删除
    IF OBJECT_ID('tempdb..#TEMP') IS NOT NULL  DROP TABLE #TEMP
    
    --查询结果放入临时表中
    SELECT LEFT(CONVERT(VARCHAR(100),indate,20),7) indate,
    intype,SUM(amount) amountINTO #TEMP
    FROM  dbo.income
    GROUP BY LEFT(CONVERT(VARCHAR(100),indate,20),7),intype
    
    --所有收入类型
    select @sql=isnull(@sql+',','')+'['+intype+']' from  #TEMP  GROUP BY intype ORDER BY intype
    --pivot 行转列
    set @sql='select * from #TEMP pivot (SUM(income) for intype in ('+@sql+')) a'
    --执行结果
    exec(@sql)
    
    --判断临时表是否存在,存在则删除
    IF OBJECT_ID('tempdb..#TEMP') IS NOT NULL  DROP TABLE #TEMP 

     未行转列:

    行转列:

  • 相关阅读:
    第一次作业
    第四次作业
    第五次作业《构建之法》心得体会
    第三次作业
    第二次作业
    第一次作业
    个人简介
    读《构建之法》有感
    第四次博客园作业(2)
    第四次博客园作业(1)
  • 原文地址:https://www.cnblogs.com/Linc2010/p/13223323.html
Copyright © 2011-2022 走看看