mysql行轉列(if + sum)
mysql用sum+if 完成行轉列(行表資料如下)
首先思考如何創建出列結構
SELECT
NAME AS '姓名',
IF(type = '語文', score, 0) AS yuwen,
IF(type = '數學', score, 0) AS shuxue
FROM
cdy_test
完成上面的後就可以看到只需要將結果以名稱分組並按列sum求和或用max取最大值就可以獲取到滿足
的結構了(因為不對應學科的記錄,其分數必然是0),完善sql如下
SELECT NAME AS '姓名', SUM(IF(type = '語文', score, 0)) AS yuwen, SUM(IF(type = '數學', score, 0)) AS shuxue FROM cdy_test GROUP BY NAME
總結:if主要是用來建立新列,並將非對應學科的分數寫為0,用sum或max配合group by保證取出的值是學科
對應的值,這樣就可以完成行轉列了(當然這種寫法沒有考慮對效能的影響)
相關推薦
mysql行轉列(if + sum)
mysql用sum+if 完成行轉列(行表資料如下) 首先思考如何創建出列結構 SELECT NAME AS '姓名', IF(type = '語文', score, 0) AS yuwen, IF(type = '數學', score, 0) AS shuxue
mysql 行轉列
行轉列最近遇到一需求原始數據如下:mysql> select id,sdkname,sid,date,total_count from u1ge_query_log;+------+----------------+------+------------+-------------+| id | s
mysql行轉列轉換
pan where mys 作用 統計 detail null 這就是 英語 http://blog.csdn.net/sinat_27406925/article/details/77507478 mysql 行列轉換 ,在項目中應用的極其頻繁,尤其是一些金融項目裏的報表
MySQL行轉列與列轉行
展示 course order by rem core null innodb tail mysql 行轉列 例如:把圖1轉換成圖2結果展示 圖1 圖2 CREATE TABLE `TEST_TB_GRADE` ( `ID` int(10) NOT NU
MySQL行轉列經典案例
準備資料表 /* Navicat MySQL Data Transfer Source Server : MyDB Source Server Version : 50720 Source Host : localhost:3306 S
mysql-行轉列
mysql-行轉列 行轉列列傳行更具體例子 1、檢視資料 Sql程式碼 SELECT * FROM tabName ; &
mysql行轉列(拆分單個欄位字串值場景)
SELECT ids,id,APPLY_ID, REPLACE( SUBSTRING_INDEX(REASON, ',', a.ids), CONCAT( SUBSTRING_INDEX(REASON, ',', a.ids - 1),
mysql行轉列
DROP TABLE IF EXISTS `class_info`; CREATE TABLE `class_info` ( `student_name` varchar(50) NOT NULL, `class_name` varchar(50) NOT NULL,
mysql行轉列利用case when
CREATE TABLE bill ( id CHAR(36) NOT NULL, customer INT(255) NULL DEFAULT NULL COMMENT ‘顧客’, shop INT(255) NULL DEFAU
mysql-行轉列、列轉行
group_concat(),函式說明 手冊上說明:該函式返回帶有來自一個組的連線的非NULL值的字串結果; 通俗點理解,其實是這樣的:group_concat()會計算哪些行屬於同一組,將屬於同一組的列顯示出來。要返回哪些列,由函式引數(就是欄位名)決定。分組必須有個標準,就是根據grou
mysql行轉列(拆分字串場景)
一對多沒有建立中間表的時候經常會採用分隔符的形式將“多”儲存在“一”的一個欄位裡,這樣做的代價是無法像一對多的時候那樣直接關聯查詢,一般採用在程式中分割後分別查詢的辦法。如下圖: 如何才能直接用sql語句查詢出下圖的效果呢? 可以藉助一個序號表,該表中除了連續的id沒有
Mysql 列轉行統計查詢 、行轉列統計查詢
- ---------------------------- -- Table structure for `TabName` -- ---------------------------- DROP TABLE IF EXISTS `TabN
mysql多表統計數查詢行轉列
今天在統計查詢時遇到以下問題,自己做個記錄: 部門A在A地區釋出一條資料庫型別資源,在B地區釋出一條檔案型別資源。存在db表: db 部門 地區 名稱 。。。 部門A 湖南 資料庫資源1 。。。 部門A 河北 資料庫資源2 。。。 部門B也在A地區釋出一條檔案型別資源。存
mySQL的行轉列
因為MYSQL裡邊沒有 PIVOT 現記錄: 原表格: mysql語句: SELECT MAX(CASE WHEN corol='紅' THEN NUM else
MySQL開發技巧 第二禪(行轉列 列轉行、生成唯一的序列、刪除重複的資料)
一、如何進行行列或者列行的轉換 行轉列的關鍵是union ,列轉行的關鍵是join 需要進行行轉列的場景 報表的設計  
Mysql-sql行轉列
原始資料如下圖所示:(商品的銷售明細)date=業務日期;Item=商品名稱;saleqty=銷售數量 -- 建立測試資料(表)create table test (Date varchar(10), item char(10),saleqty int);insert test values('2010
關於MySQL中查詢語句行轉列分組的問題
今天遇到一個SQL的小問題,首先需要按天查詢資料,並且需要統計每一個不同位置的資料條數,處理的時候卡住了,特此記錄一下: #首先,第一次寫的SQL如下,先按天分組,後按指定條件分組: SELECT id, DATE_FORMAT(crea
MySQL中GROUP_CONCAT函式長度限制處理/實現行轉列的功能
MySQL提供了一個很方便的函式group_concat可以實現行轉列的功能。 SELECT t.*, (SELECT GROUP_CONCAT(fellow_company_id) v1 FROM t_trade_fellow a WHERE fellow_type = '1' AND a.company_
MySQL儲存過程的動態行轉列
轉載:http://segmentfault.com/a/1190000004314724?ref=myread MySQL儲存過程中使用動態行轉列 最近做專案關於資料報表處理,然而資料庫儲存格式和報表展現形式不同,需要進行一下行轉列的操作,在做上一個專案的時候也看
mysql動態行轉列
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 DROP TABLE IF EXISTS