mysql中怎么实现行列转换操作

56次阅读
没有评论

共计 1222 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 mysql 中怎么实现行列转换操作,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

create table tx(
id int primary key,
c1 char(2),
c2 char(2),
money int,
num int
);
 
 
 
insert into tx values
(1 , A1 , B1 ,9,81),
(2 , A2 , B1 ,7,53),
(3 , A3 , B1 ,4,62),
(4 , A4 , B1 ,2,91),
(5 , A1 , B2 ,2,42),
(6 , A2 , B2 ,9,66),
(7 , A3 , B2 ,8,84),
(8 , A4 , B2 ,5,55),
(9 , A1 , B3 ,1,61),
(10 , A2 , B3 ,8,43),
(11 , A3 , B3 ,8,64),
(12 , A4 , B3 ,6,72),
(13 , A1 , B4 ,8,33),
(14 , A2 , B4 ,2,24),
(15 , A3 , B4 ,6,76),
(16 , A4 , B4 ,9,51),
(17 , A1 , B4 ,3,30),
(18 , A2 , B4 ,5,26),
(19 , A3 , B4 ,2,15),
(20 , A4 , B4 ,5,11);
 
/* 第一种静态列 */
select ifnull(c1, total),
  sum(if(c2= B1 ,money,0)) AS B1money,
  sum(if(c2= B1 ,num,0)) AS B1num,
  sum(if(c2= B2 ,money,0)) AS B2money,
  sum(if(c2= B2 ,num,0)) AS B2num,
  sum(if(c2= B3 ,money,0)) AS B3money,
  sum(if(c2= B3 ,num,0)) AS B3num,
  sum(if(c2= B4 ,money,0)) AS B4money,
  sum(if(c2= B4 ,num,0)) AS B4num,
  SUM(money) AS TOTAL,
  SUM(num) AS TOTAL
  from tx
  group by c1 with rollup ;
 
 
 
/* 第二种动态列 */
 
SET @EE=
 
SELECT @EE:=CONCAT(
@EE,
SUM(IF(C2=\ ,C2, \ ,
,money,0)) AS ,
C2,
money, ,
SUM(IF(C2=\ ,C2, \ ,
,num,0)) AS ,
C2,
num, ) FROM (SELECT DISTINCT C2 FROM TX) A;
 
SET @QQ=CONCAT(SELECT ifnull(c1,\ total\), ,LEFT(@EE,LENGTH(@EE)-1), ,SUM(money) AS moneyTOTAL,SUM(num) AS numTOTAL FROM
 
TX GROUP BY C1 WITH ROLLUP
 
PREPARE stmt2 FROM @QQ;
 
EXECUTE stmt2;

关于 mysql 中怎么实现行列转换操作就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计1222字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)