zoukankan      html  css  js  c++  java
  • mysql行转列

    案例一丶

     1 SET @sql = NULL;
     2 SELECT
     3   GROUP_CONCAT(DISTINCT
     4     CONCAT(
     5       'MAX(IF(c.coursenm = ''',
     6       c.coursenm,
     7       ''', s.scores, 0)) AS ''',
     8       c.coursenm, ''''
     9     )
    10   ) INTO @sql
    11 FROM courses c;
    12  
    13 SET @sql = CONCAT('Select st.stuid, st.stunm, ', @sql, 
    14                         ' From Student  st 
    15                         Left Join score s On st.stuid = s.stuid
    16                         Left Join courses c On c.courseno = s.courseno
    17                         Group by st.stuid');
    18 PREPARE stmt FROM @sql;
    19 EXECUTE stmt;
    20 DEALLOCATE PREPARE stmt;
    View Code

     

    案例二丶

     1 CREATE DEFINER=`cmsuser`@`%` PROCEDURE `proc_zz`(
     2 IN _PlanArea varchar(50),
     3 IN _ProjectId varchar(50),
     4 IN _FloorNumber varchar(50),
     5 IN _FormatsName varchar(50),
     6 IN _TwoFormatsName varchar(50),
     7 IN _BunkNo varchar(50),
     8 IN _BrandAbbreviation varchar(50),
     9 IN _BusinessManager varchar(50),
    10 IN _keyWord varchar(50)
    11 )
    12 begin
    13 
    14 SET @sql = NULL; 
    15 SET @sqlwhere ='';
    16 
    17 SELECT
    18   GROUP_CONCAT(DISTINCT
    19     CONCAT(
    20       'MAX(IF(fl.LicenceName = ''',
    21       fl.LicenceName,
    22       ''', lm.LicenseValidityDate, null)) AS ',
    23       fl.LicenceName
    24     )
    25   ) INTO @sql
    26 FROM he_operating_formatsandlicencerelational fl;
    27 
    28 if _PlanArea is not null and _PlanArea !='' then
    29 SET @sqlwhere=CONCAT(@sqlwhere," ","and s.PlanArea=","'",_PlanArea,"'");
    30 end if;
    31 if _ProjectId is not null and _ProjectId !='' then
    32 SET @sqlwhere=CONCAT(@sqlwhere," ","and s.ProjectId=","'",_ProjectId,"'");
    33 end if;
    34 if _FloorNumber is not null and _FloorNumber !='' then
    35 SET @sqlwhere=CONCAT(@sqlwhere," ","and s.FloorNumber=","'",_FloorNumber,"'");
    36 end if;
    37 if _FormatsName is not null and _FormatsName !='' then
    38 SET @sqlwhere=CONCAT(@sqlwhere," ","and s.FormatsName=","'",_FormatsName,"'");
    39 end if;
    40 if _TwoFormatsName is not null and _TwoFormatsName !='' then
    41 SET @sqlwhere=CONCAT(@sqlwhere," ","and s.TwoFormatsName=","'",_TwoFormatsName,"'");
    42 end if;
    43 if _BunkNo is not null and _BunkNo !='' then
    44 SET @sqlwhere=CONCAT(@sqlwhere," ","and s.BunkNo=","'",_BunkNo,"'");
    45 end if;
    46 if _BrandAbbreviation is not null and _BrandAbbreviation !='' then
    47 SET @sqlwhere=CONCAT(@sqlwhere," ","and s.BrandAbbreviation=","'",_BrandAbbreviation,"'");
    48 end if;
    49 if _BusinessManager is not null and _BusinessManager !='' then
    50 SET @sqlwhere=CONCAT(@sqlwhere," ","and s.BusinessManager=","'",_BusinessManager,"'");
    51 end if;
    52 if _keyWord is not null and _keyWord !='' then
    53 SET @sqlwhere=CONCAT(@sqlwhere," ",
    54                                         "and s.PlanArea=","'",_keyWord,"'",
    55                                         "or s.PlanArea=","'",_keyWord,"'",
    56                                         "or s.PlanArea=","'",_keyWord,"'"
    57 );
    58 end if;
    59 
    60 SET @sql = CONCAT('SELECT s.StoreNo,s.PlanArea,s.ProjectName,s.FloorNumber,s.FormatsCode,s.FormatsName,s.TwoFormatsName
    61                     , s.BunkNo,s.BrandAbbreviation,s.BusinessManager,s.StoreManager
    62                     , s.StoreManagerPhone, ', @sql, ' FROM he_merchants_store s
    63                    LEFT JOIN he_operating_licencemanageinfo AS lm ON s.StoreNo = lm.StoreNo 
    64                                      LEFT JOIN he_operating_formatsandlicencerelational fl on s.FormatsCode=fl.FormatsCode
    65                                      WHERE 1=1',@sqlwhere,'   GROUP BY s.StoreNo,s.FormatsCode');
    66 
    67  prepare stmt from @sql;
    68  execute stmt;
    69 deallocate prepare stmt;
    70 end
    View Code
    作者:chenze
    出处:https://www.cnblogs.com/chenze-Index/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    RAID10磁盘阵列损坏的修复
    Linux系统中物理劵增加、删除;卷组的扩容、缩容;逻辑卷的增加与删除
    Ubuntu alternate和desktop区别 zz
    freecommander 快捷键列表 zz
    调试小技巧
    Java框架
    获取url的文件名(动态改变css)
    Urlrewrite方法集
    NVelocity模板引擎,初级体验,非常有用的东东.(转)
    CodeSmith&NetTiers Step by Step[转]
  • 原文地址:https://www.cnblogs.com/chenze-Index/p/9987118.html
Copyright © 2011-2022 走看看