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

(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 行列動態轉換的實現(列聯表,交叉表)

本文地址: http://www.cppcns.com/shujuku/mysql/175566.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281997.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第六次作業—例行報告

本周PSP 進度條 代碼累計折線圖 博文累計折線圖 本周餅狀圖 轉載于:https://www.cnblogs.com/zej87/p/7738895.html

Tomcat7/8開啟WebDAV的支持

WebDAV是一種超文本傳輸協議,Tomcat默認是支持WebDAV的,且默認為禁用狀態。 更多詳細信息,請參考: https://zh.wikipedia.org/wiki/WebDAV http://www.webdav.org/ 開啟步驟如下: 1、在Tomcat的webapps目錄下新建webda…

算法復雜度分析(下)

前一篇文章算法復雜度分析(上)講述了復雜度的大 O 表示法和幾個分析原則,這篇文章我們來講講另外幾種復雜度,最好情況時間復雜度(best case time complexity)、最壞情況時間復雜度(worst case t…

免費分享一些.NET Core比較優秀的社區資料和微軟官方資料

這次小編所分享的這套筆記手冊,主要是分享一些.NET Core比較優秀的社區資料和微軟官方資料。已經把所有的重要知識點進行了完整的歸類和整理,可以讓大家更清晰和快速的學習.NET Core,不浪費任何多余的時間!全網首發!相…

python異或運算怎么算_小強學Python+OpenCV之-1.4.4掩膜mask及位運算(與、或、非、異或)...

問題引入在小強學PythonOpenCV之-1.4.2裁剪一節,我們使用的是numpy數組切片功能實現圖片區域的裁剪。那么,如果我們想要裁剪圖像中任意形狀的區域時,應該怎么辦呢?答案是,使用掩膜(masking)。但是這一節我們…

51 Nod 1670 打怪獸

1670 打怪獸lyk在玩一個叫做“打怪獸”的游戲。游戲的規則是這樣的。lyk一開始會有一個初始的能量值。每次遇到一個怪獸,若lyk的能量值>怪獸的能量值,那么怪獸將會被打敗,lyk的能量值增加1,否則lyk死亡,游戲結束。若…

QQ協議調試器 QQDebugger

QQ協議老變,為了分析協議,單用抓包工具還是不夠的,還是得需要很好的調試工具。在網上找了幾個調試工具,易用性均欠佳,不得已自己開發了一個 QQDebugger,不敢專美,特意發布出來。QQDebugger 在功…

PostgreSQL 10.1 手冊_部分 II. SQL 語言_第 5 章 數據定義_5.5. 修改表

5.5. 修改表 5.5.1. 增加列5.5.2. 移除列5.5.3. 增加約束5.5.4. 移除約束5.5.5. 更改列的默認值5.5.6. 修改列的數據類型5.5.7. 重命名列5.5.8. 重命名表當我們已經創建了一個表并意識到犯了一個錯誤或者應用需求發生改變時,我們可以移除表并重新創建它。但如果表中…

Uptime-Kuma 一個輕量的開源監控工具

點擊藍字 關注我們你好,這里是 Dotnet 工具箱,定期分享 Dotnet 有趣,有用的工具,不要忘記關注。今天給大家介紹一個開源的監控工具 Uptime Kuma, 主要用來監控 Web 以及網絡, 和 Prometheus 相比, 它是輕量的, Uptime Kuma 是基于…

怎么查看mysql正在運行的語句_MySQL如何查詢當前正在運行的SQL語句

通過status命令,查看Slow queries這一項,如果值長時間>0,說明有查詢執行時間過長以下為引用的內容:mysql> status;--------------mysql Ver 11.18 Distrib 3.23.58, for redhat-linux-gnu (i386)Connection id: 53Current database: (n…

SpringBoot實戰之SpringBoot自動配置原理

SpringBoot 自動配置主要通過 EnableAutoConfiguration, Conditional, EnableConfigurationProperties 或者 ConfigurationProperties 等幾個注解來進行自動配置完成的。EnableAutoConfiguration 開啟自動配置,主要作用就是調用 Spring-Core 包里的 loadFactoryName…

Install OpenCV-Python in Ubuntu

之前安裝python版opencv,需要下載whl文件,進行安裝,這是在window環境下的:安裝opencv_python,下載whl包安裝系統python下的opencv 今天發現一個簡單的方法。Install OpenCV-Python in UbuntuInstall package python-opencv with f…

如何健康地跑步?

最近某司高管跑步 28 公里后猝死,被各大媒體報道,每次這種悲劇發生,而且還跟跑步扯上關系,總是讓人心痛。通過報道了解到,這位高管酷愛跑馬拉松,身體素質和運動能力肯定是強于普通人的,但還是遭…

項目共享協調機制

API,協調前端與后端開發的連接點。 面臨幾個問題 1. API更新不及時,導致前端開發的接口沒有及時更新而出現各種問題。 2. 文檔描述得不準確 3. 沒有統一的標準。 我們可以使用swagger editor, swagger ui。第一是編輯器,第二個是展…

vs2008C1902程序數據庫管理不匹配

大清早打開vs2008,出現這么詭異的錯, 刪了一個dll的就好了。如圖

mysql user表 空_mysql 忘記密碼,重置密碼,mysql.user表為空的解決辦法

一、用戶表有用戶,直接修改密碼ERROR 1045 (28000): Access denied for user rootlocalhost (using password: YES)修改mysql配置文件my.cnf:vim /etc/my.cnf在[mysqld]中添加skip-grant-tables重啟mysql服務,用空密碼直接登錄,查…

鏈式封裝與調用

var CheckObject function(){}; CheckObject.prototype function(){checkName:function(){// codereturn this;},checkEmail:function(){// code return this;},checkPassword:function(){// codereturn this;} } //使用 var Check new CheckObject() Check.checkName().che…

全新升級的AOP框架Dora.Interception[3]: 基于特性標注的攔截器注冊方式

在Dora.Interception中按照約定方式定義的攔截器可以采用多種方式注冊到目標方法上。本篇文章介紹最常用的基于“特性標注”的攔截器注冊方式,下一篇會介紹另一種基于(Lambda)表達式的注冊方式:全新升級的AOP框架Dora.Interceptio…

在慘遭勒索病毒攻擊之后,微軟呼吁重新制定“數字日內瓦公約”

基于美國安全局泄露文檔開發的病毒程序成為上周的主要新聞,該病毒導致全世界大量的Windows電腦癱瘓。WannaCry勒索病毒在150個國家有20萬個受害者,包括英國的醫院、西班牙的基礎設施部門和俄羅斯的內政部。Renault在受到攻擊之后關閉了幾家在法國境內的工…

【代碼審計】PHP代碼審計---基礎記錄

PHP偽協議 PHP偽協議事實上是其支持的協議與封裝協議,支持的種類有以下12種。 * file:// — 訪問本地文件系統 * http:// — 訪問 HTTP(s) 網址 * ftp:// — 訪問 FTP(s) URLs * php:// — 訪問各個輸入/輸出流(I/O streams) * zlib:// — 壓…