Mysql的列修改成行并顯示數(shù)據(jù)的簡(jiǎn)單實(shí)現(xiàn)

創(chuàng)建測(cè)試表:
DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `year` int(11) DEFAULT NULL, `month` int(11) DEFAULT NULL, `amount` double DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入數(shù)據(jù):
INSERT INTO `test` VALUES ('1991', '1', '1.1');
INSERT INTO `test` VALUES ('1991', '2', '1.2');
INSERT INTO `test` VALUES ('1991', '3', '1.3');
INSERT INTO `test` VALUES ('1991', '4', '1.4');
INSERT INTO `test` VALUES ('1992', '1', '2.1');
INSERT INTO `test` VALUES ('1992', '2', '2.2');
INSERT INTO `test` VALUES ('1992', '3', '2.3');
INSERT INTO `test` VALUES ('1992', '4', '2.3');
看到題目要求,仔細(xì)想想可以:
利用SUM(IF()) 生成列 + WITH ROLLUP 生成匯總行,并利用 IFNULL將匯總行標(biāo)題顯示為 Total_num
實(shí)現(xiàn)
SQL代碼塊如下:
select year, sum(if(month=1,amount,0)) as "M1", sum(if(month=2,amount,0)) as "M2", sum(if(month=3,amount,0)) as "M3", sum(if(month=4,amount,0)) as "M4" from test GROUP by year;
效果如下:

以上所述是小編給大家介紹的Mysql的列修改成行并顯示數(shù)據(jù)的簡(jiǎn)單實(shí)現(xiàn),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
mysql數(shù)據(jù)庫(kù)遷移至Oracle數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了mysql數(shù)據(jù)庫(kù)遷移至Oracle數(shù)據(jù)庫(kù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
CentOS7下 MySQL定時(shí)自動(dòng)備份的實(shí)現(xiàn)方法
這篇文章主要介紹了CentOS7 下MySQL定時(shí)自動(dòng)備份的實(shí)現(xiàn)方法,主要實(shí)現(xiàn)了數(shù)據(jù)庫(kù)備份,清理過(guò)期備份文件功能,需要的朋友可以參考下2019-12-12
MySQL:reading initial communication packet問(wèn)題解決方法
網(wǎng)站訪問(wèn)出現(xiàn)如題錯(cuò)誤,經(jīng)過(guò)檢查my.cnf,發(fā)現(xiàn)innodb_buffer_pool_size = 2048M 設(shè)置過(guò)大,調(diào)整為innodb_buffer_pool_size = 1024M即可,網(wǎng)上也有該問(wèn)題的其他解決方法,但都不能解決我的問(wèn)題2012-07-07
SQL實(shí)現(xiàn)LeetCode(185.系里前三高薪水)
這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(185.系里前三高薪水),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08

