select * from t_temp; +---------+..."/>
您好,登錄后才能下訂單哦!
1. 背景
* 由于MySQL 不支持類(lèi)型Oracle與SQL Server的pivot功能進(jìn)行行列轉(zhuǎn)換。
2. 表與數(shù)據(jù)
mysql> select * from t_temp; +---------+-----------+------------+ | year | season | orderCount | +---------+-----------+------------+ | 2010年 | 一季度 | 100 | | 2010年 | 二季度 | 200 | | 2010年 | 三季度 | 300 | | 2010年 | 四季度 | 400 | | 2011年 | 一季度 | 150 | | 2011年 | 二季度 | 300 | | 2011年 | 三季度 | 450 | | 2011年 | 四季度 | 600 | +---------+-----------+------------+ 8 rows in set (0.00 sec)
3. 通過(guò)子查詢(xún)與case when判斷實(shí)現(xiàn)
mysql> select year, sum(orderCount1) '第一季度', -> sum(orderCount2) '第二季度', -> sum(orderCount3) '第三季度', -> sum(orderCount4) '第四季度' -> from -> ( -> select year, -> case when season = '一季度' then -> orderCount -> end orderCount1, -> case when season = '二季度' then -> orderCount -> end orderCount2, -> case when season = '三季度' then -> orderCount -> end orderCount3, -> case when season = '四季度' then -> orderCount -> end orderCount4 -> from t_temp -> ) t -> group by year; +---------+--------------+--------------+--------------+--------------+ | year | 第一季度 | 第二季度 | 第三季度 | 第四季度 | +---------+--------------+--------------+--------------+--------------+ | 2010年 | 100 | 200 | 300 | 400 | | 2011年 | 150 | 300 | 450 | 600 | +---------+--------------+--------------+--------------+--------------+ 2 rows in set (0.00 sec)
4. 通過(guò)IF聚合函數(shù)實(shí)現(xiàn)
mysql> SELECT year, -> SUM(IF(season = '一季度', orderCount, null)) AS '第一季度', -> SUM(IF(season = '二季度', orderCount, null)) AS '第二季度', -> SUM(IF(season = '三季度', orderCount, null)) AS '第三季度', -> SUM(IF(season = '四季度', orderCount, null)) AS '第四季度' -> FROM t_temp -> GROUP BY year; +---------+--------------+--------------+--------------+--------------+ | year | 第一季度 | 第二季度 | 第三季度 | 第四季度 | +---------+--------------+--------------+--------------+--------------+ | 2010年 | 100 | 200 | 300 | 400 | | 2011年 | 150 | 300 | 450 | 600 | +---------+--------------+--------------+--------------+--------------+ 2 rows in set (0.00 sec)
5. 總結(jié)
以需求驅(qū)動(dòng)技術(shù),技術(shù)本身沒(méi)有優(yōu)略之分,只有業(yè)務(wù)之分。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。