婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mysql 行列動態轉換的實現(列聯表,交叉表)

mysql 行列動態轉換的實現(列聯表,交叉表)

熱門標簽:谷歌地圖標注位置圖解 沈陽智能外呼系統供應商 桂林云電銷機器人收費 東莞外呼企業管理系統 如何選擇優質的外呼系統 地圖簡圖標注 南通電銷外呼系統哪家強 清遠申請400電話 手機外呼系統違法嗎

(1)動態,適用于列不確定情況

create table table_name(
 id int primary key,
 col1 char(2),
 col2 char(2),
 col3 int
);
insert into table_name values
(1 ,'A1','B1',9),
(2 ,'A2','B1',7),
(3 ,'A3','B1',4),
(4 ,'A4','B1',2),
(5 ,'A1','B2',2),
(6 ,'A2','B2',9),
(7 ,'A3','B2',8),
(8 ,'A4','B2',5),
(9 ,'A1','B3',1),
(10 ,'A2','B3',8),
(11 ,'A3','B3',8),
(12 ,'A4','B3',6),
(13 ,'A1','B4',8),
(14 ,'A2','B4',2),
(15 ,'A3','B4',6),
(16 ,'A4','B4',9),
(17 ,'A1','B4',3),
(18 ,'A2','B4',5),
(19 ,'A3','B4',2),
(20 ,'A4','B4',5);
select * from table_name;
+----+------+------+------+
| id | col1 | col2 | col3 |
+----+------+------+------+
| 1 | A1  | B1  |  9 |
| 2 | A2  | B1  |  7 |
| 3 | A3  | B1  |  4 |
| 4 | A4  | B1  |  2 |
| 5 | A1  | B2  |  2 |
| 6 | A2  | B2  |  9 |
| 7 | A3  | B2  |  8 |
| 8 | A4  | B2  |  5 |
| 9 | A1  | B3  |  1 |
| 10 | A2  | B3  |  8 |
| 11 | A3  | B3  |  8 |
| 12 | A4  | B3  |  6 |
| 13 | A1  | B4  |  8 |
| 14 | A2  | B4  |  2 |
| 15 | A3  | B4  |  6 |
| 16 | A4  | B4  |  9 |
| 17 | A1  | B4  |  3 |
| 18 | A2  | B4  |  5 |
| 19 | A3  | B4  |  2 |
| 20 | A4  | B4  |  5 |
+----+------+------+------+
SET @EE='';
SELECT @EE:=CONCAT(@EE,'SUM(IF(col2=\'',col2,''',',col3,0)) AS ',col2,',') FROM (SELECT DISTINCT col2 FROM table_name) A;
SET @QQ=CONCAT('SELECT ifnull(col1,\'total') AS columnA,',LEFT(@EE,LENGTH(@EE)-1),' ,SUM(col3) AS TOTAL FROM table_name GROUP BY col1 WITH ROLLUP');
PREPARE stmt2 FROM @QQ;
EXECUTE stmt2;
+---------+------+------+------+------+-------+
| columnA | B1  | B2  | B3  | B4  | TOTAL |
+---------+------+------+------+------+-------+
| A1   |  9 |  2 |  1 |  11 |  23 |
| A2   |  7 |  9 |  8 |  7 |  31 |
| A3   |  4 |  8 |  8 |  8 |  28 |
| A4   |  2 |  5 |  6 |  14 |  27 |
| total  |  22 |  24 |  23 |  40 |  109 |
+---------+------+------+------+------+-------+

(2)第二個字段確定的情況下使用

SELECT
  IFNULL(col1,'total') AS total,
  SUM(IF(col2='B1',col3,0)) AS B1,
  SUM(IF(col2='B2',col3,0)) AS B2,
  SUM(IF(col2='B3',col3,0)) AS B3,
  SUM(IF(col2='B4',col3,0)) AS B4,
  SUM(IF(col2='total',col3,0)) AS total
 FROM (
  SELECT col1,IFNULL(col2,'total') AS col2,SUM(col3) AS col3
  FROM table_name
  GROUP BY col1,col2
  WITH ROLLUP
  HAVING col1 IS NOT NULL
 ) AS A
 GROUP BY col1
 WITH ROLLUP;

注: WITH ROLLUP 用于列上求和; SUM(IF(col2='total',col3,0)) AS total 用于行上求和。

(3)第二個字段確定的情況下使用

select ifnull(col1,'total') AS col1,
 sum(if(col2='B1',col3,0)) AS B1,
 sum(if(col2='B2',col3,0)) AS B2,
 sum(if(col2='B3',col3,0)) AS B3,
 sum(if(col2='B4',col3,0)) AS B4,SUM(col3) AS TOTAL
 from table_name
 group by col1 with rollup ;

以上這篇mysql 行列動態轉換的實現(列聯表,交叉表)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 數據庫實現行列轉換(mysql示例)
  • mysql 行列轉換的示例代碼

標簽:重慶 常德 天津 臨沂 成都 貴州 湖州 內蒙古

巨人網絡通訊聲明:本文標題《mysql 行列動態轉換的實現(列聯表,交叉表)》,本文關鍵詞  mysql,行列,動態,轉換,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql 行列動態轉換的實現(列聯表,交叉表)》相關的同類信息!
  • 本頁收集關于mysql 行列動態轉換的實現(列聯表,交叉表)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 堆龙德庆县| 广灵县| 天气| 中牟县| 昂仁县| 南投市| 永修县| 略阳县| 武安市| 顺平县| 嘉峪关市| 和政县| 义乌市| 建湖县| 卓尼县| 武义县| 娄底市| 侯马市| 赤峰市| 香格里拉县| 吉隆县| 安吉县| 忻城县| 镇雄县| 江北区| 澎湖县| 都安| 武胜县| 巴南区| 安福县| 灵石县| 台山市| 台东市| 祁阳县| 吉隆县| 连山| 内丘县| 玛多县| 来安县| 屏山县| 冷水江市|