欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql 行列動態(tài)轉(zhuǎn)換的實現(xiàn)(列聯(lián)表,交叉表)

 更新時間:2017年01月03日 10:43:48   投稿:jingxian  
下面小編就為大家?guī)硪黄猰ysql 行列動態(tài)轉(zhuǎn)換的實現(xiàn)(列聯(lián)表,交叉表)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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 行列動態(tài)轉(zhuǎn)換的實現(xiàn)(列聯(lián)表,交叉表)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql允許外網(wǎng)訪問以及修改mysql賬號密碼實操方法

    mysql允許外網(wǎng)訪問以及修改mysql賬號密碼實操方法

    這篇文章主要介紹了mysql允許外網(wǎng)訪問以及修改mysql賬號密碼實操方法,有需要的朋友們可以參考學(xué)習(xí)下。
    2019-08-08
  • MySQL主從復(fù)制原理詳情

    MySQL主從復(fù)制原理詳情

    這篇文章主要介紹了MySQL主從復(fù)制原理詳情,MySQL?主從復(fù)制是指數(shù)據(jù)可以從一個MySQL數(shù)據(jù)庫服務(wù)器主節(jié)點復(fù)制到一個或多個從節(jié)點,文章圍繞主題展開詳細的內(nèi)容介紹。感興趣的小伙伴可以參考一下
    2022-06-06
  • 詳解如何避免MYSQL主從延遲帶來的讀寫問題

    詳解如何避免MYSQL主從延遲帶來的讀寫問題

    當在主庫上進行更新后,有可能數(shù)據(jù)還沒來得及同步到從庫,但是這個時候又有讀數(shù)據(jù)的需求,為了能正確讀取出數(shù)據(jù),這個時候就只有讀主庫了,所以本文給大家介紹了如何避免MYSQL主從延遲帶來的讀寫問題,需要的朋友可以參考下
    2024-03-03
  • 通過ibd文件恢復(fù)MySql數(shù)據(jù)的操作方法

    通過ibd文件恢復(fù)MySql數(shù)據(jù)的操作方法

    文章介紹通過.ibd文件恢復(fù)MySQL數(shù)據(jù)的過程,包括知道表結(jié)構(gòu)和不知道表結(jié)構(gòu)兩種情況,對于知道表結(jié)構(gòu)的情況,可以直接將.ibd文件復(fù)制到新的數(shù)據(jù)庫目錄并重啟MySQL,對于不知道表結(jié)構(gòu)的情況,可以使用ibd2sql工具生成對應(yīng)的SQL腳本,然后執(zhí)行該腳本恢復(fù)數(shù)據(jù),感興趣的朋友看看吧
    2025-03-03
  • MySQL 用戶創(chuàng)建與授權(quán)最佳實踐

    MySQL 用戶創(chuàng)建與授權(quán)最佳實踐

    在MySQL中,用戶管理和權(quán)限控制是數(shù)據(jù)庫安全的重要組成部分,下面詳細介紹如何在MySQL中創(chuàng)建用戶并授予適當?shù)臋?quán)限,感興趣的朋友跟隨小編一起看看吧
    2025-06-06
  • MySQL?Community?Server?8.0.29安裝配置方法圖文教程

    MySQL?Community?Server?8.0.29安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了MySQL?Community?Server?8.0.29安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 從數(shù)據(jù)庫中取出最近三十天的數(shù)據(jù)并生成柱狀圖

    從數(shù)據(jù)庫中取出最近三十天的數(shù)據(jù)并生成柱狀圖

    從數(shù)據(jù)庫中取出最近三十天的數(shù)據(jù)并生成柱狀圖的代碼,需要的朋友可以參考下。
    2011-05-05
  • MySQL筆記之修改表的實現(xiàn)方法

    MySQL筆記之修改表的實現(xiàn)方法

    我們在創(chuàng)建表的過程中難免會考慮不周,因此后期會修改表。本篇文章就介紹了在mysql中修改表的實現(xiàn)方法。需要的朋友參考下
    2013-05-05
  • 解決mysql不能插入中文Incorrect string value

    解決mysql不能插入中文Incorrect string value

    首先我的配置文件的設(shè)置的默認字符集是utf8即
    2009-05-05
  • centos 6.5下 mysql-community-server. 5.7.18-1.el6安裝

    centos 6.5下 mysql-community-server. 5.7.18-1.el6安裝

    這篇文章主要介紹了centos 6.5下 mysql-community-server. 5.7.18-1.el6安裝,需要的朋友可以參考下
    2017-04-04

最新評論