zoukankan      html  css  js  c++  java
  • SQL Pivot示例 Yang

    SQL Pivot示例 ,记录一下!

    --建表
    CREATE TABLE TEMPTB(
      BUSINESSNAME NVARCHAR(20),
      FEEDATE NVARCHAR(10),
      TOTALFEE DECIMAL(18,2)
    )
    --填充数据
    INSERT INTO dbo.TEMPTB (BUSINESSNAME, FEEDATE, TOTALFEE)
    VALUES ('基础业务', '20121101', 1123.5)
    GO
    INSERT INTO dbo.TEMPTB (BUSINESSNAME, FEEDATE, TOTALFEE)
    VALUES ('基础通信', '20121102', 2040)
    GO
    INSERT INTO dbo.TEMPTB (BUSINESSNAME, FEEDATE, TOTALFEE)
    VALUES ('基础业务', '20121102', 1043)
    GO
    INSERT INTO dbo.TEMPTB (BUSINESSNAME, FEEDATE, TOTALFEE)
    VALUES ('基础业务', '20121103', 10)
    GO
    INSERT INTO dbo.TEMPTB (BUSINESSNAME, FEEDATE, TOTALFEE)
    VALUES ('集团业务', '20121104', 1012.9)
    GO
    INSERT INTO dbo.TEMPTB (BUSINESSNAME, FEEDATE, TOTALFEE)
    VALUES ('终端业务', '20121105', 101.4)
    GO
    INSERT INTO dbo.TEMPTB (BUSINESSNAME, FEEDATE, TOTALFEE)
    VALUES ('自有业务', '20121106', 10.5)
    GO
    
    -- PIVOT 示例
    DECLARE
        @sql NVARCHAR(2000)
    SELECT @sql=ISNULL(@sql+',','')+'['+FEEDATE+']'  FROM TEMPTB GROUP BY FEEDATE    
    --注意,pivot透视中的in后面的条件中,只能是以字符开始,如:汉字、字母;
    --上面的FEEDATE即使设置为varchar类型,但如果其内容为20121101,1,2等数字,放在下面的IN当中仍然会出错
    --所以,在数字外面包括了一层[FEEDATE]
    SET @sql='SELECT * FROM TEMPTB PIVOT(MAX(TOTALFEE) FOR FEEDATE IN('+@sql+'))A'
    EXEC(@sql)
  • 相关阅读:
    cf 1452E. Two Editorials(中点排序)
    cf 888G
    cf 1447E. Xor Tree(二进制分治)
    2020ICPC·小米 网络选拔赛第一场 E-Phone Network (线段树)
    cf 1447D. Catching Cheaters ( 最大子段和思想 dp )
    POJ
    cf 1437F.Emotional Fishermen(计数dp)
    霍夫丁不等式
    切比雪夫不等式
    霍夫丁不等式引理证明
  • 原文地址:https://www.cnblogs.com/Yang2012/p/2935186.html
Copyright © 2011-2022 走看看