zoukankan      html  css  js  c++  java
  • Sql Server 中 PIVOT在mysql 中的实现

    sql server 中项目代码:

    select isnull(MI线,0) as F_MIValue,isnull(SMT线,0) as F_SMTValue,isnull(空压站,0) as F_ChangePre,
            isnull(Repair线,0) as F_RepairValue,isnull(Assembly线,0) as F_AssemblyValue
            from (select F_Name,CONVERT(decimal(16,2),sum(F_Value)) as F_Value from EnergyValue 
            where F_Name like '%MI%' or F_Name like '%SMT%'or F_Name like '%Repair%' or F_Name like '%Assembly%' or F_Name = '空压站'
            group by F_Name) aa 
        pivot(max(F_Value)for F_Name in(MI线,SMT线,空压站,Repair线,Assembly线))a

    而类似下面

     PIVOT (MAX (F_ZZ_BaseValue) FOR F_Flag IN (F, S)) AS S ;
    # Mysql不支持PIVOT函数进行行列转换,故需要通过sql语句进行转换。

    实现代码如下:

    CREATE TEMPORARY TABLE IF NOT EXISTS T_TmpPivot
    (
        select F_Name,CONVERT(sum(F_Value),decimal(16,2)) as F_Value from EnergyValue 
            where F_Name like '%MI%' or F_Name like '%SMT%'or F_Name like '%Repair%' or F_Name like '%Assembly%' or F_Name = '空压站'
            group by F_Name
    );
    
    select ifnull(MI线,0) as F_MIValue,ifnull(SMT线,0) as F_SMTValue,ifnull(空压站,0) as F_ChangePre,
    ifnull(Repair线,0) as F_RepairValue,ifnull(Assembly线,0) as F_AssemblyValue
    from(
        SELECT MAX(MI线) AS MI线,MAX(SMT线) AS SMT线,MAX(空压站) AS 空压站,MAX(Repair线) AS Repair线,MAX(Assembly线) AS Assembly线 FROM
        (
         SELECT 
                CASE F_Name WHEN 'MI线' THEN F_Value END AS MI线,
                CASE F_Name WHEN 'SMT线' THEN F_Value END AS SMT线,
                CASE F_Name WHEN '空压站' THEN F_Value END AS 空压站,
                CASE F_Name WHEN 'Repair线' THEN F_Value END AS Repair线,
                CASE F_Name WHEN 'Assembly线' THEN F_Value END AS Assembly线
                FROM T_TmpPivot 
        ) AS tmp
    
    ) AS T;
    
    
    DROP TEMPORARY TABLE IF EXISTS T_TmpPivot;
  • 相关阅读:
    栈的压入、弹出序列
    HM代码分析--TAppEncoder
    HM代码分析--TAppDecoder
    包含min函数的栈
    GMOJ 6841. 【2020.11.5提高组模拟】淘淘蓝蓝之树 林
    【2020.11.5提高组模拟】总结
    dsu on tree学习总结 (树上启发式合并)
    GMOJ 6847. 【2020.11.03提高组模拟】通往强者之路
    2020.11.03【NOIP提高A组】模拟
    【2020.11.02提高组模拟】总结
  • 原文地址:https://www.cnblogs.com/neughj/p/4973571.html
Copyright © 2011-2022 走看看