Pivot Table Using MySQL - A Complete Guide | WebDevZoomhttp://webdevzoom.com/pivot-table-using-mysql/ Cross-Tabulation (Pivot Tables) with MySQL - CodeProjecthttps://www.codeproject.com/articles/363339/cross-tabulation-pivot-tables-with-mysql Pivot T…
create table capacity( type int , numbers int , monthst INT ); select type, sum(case monthst when 1 then numbers else 0 end ) 一月, sum(case monthst when 2 then numbers else 0 end ) 二月, sum(case monthst when 3 then numbers else 0 end ) 三月, sum(case mon…
sum(if(条件,列值,0))语法用例: select name,sum(if(subject="语文",score,0)) as "语文" from grade GROUP BY name if中第一个参数为条件,符合条件的内容才会将第二个参数相加,不符合的内容将第三个参数相加. 第二个参数为要相加的参数,可以用常量,也可以用字段值. 第三个参数为条件为假时相加的值,通常设为0. 为了将行转为列(这种操作一般用于统计),可使用如下语句: select name,…
行转列 使用CASE语句: SELECT SUM(CASE USER_NAME='A' THEN KILLS END) AS 'A', SUM(CASE USERNAME='B' THEN KILL END) AS 'B', SUM(CASE USERNAME='C' THEN KILL END) AS 'C' FROM A INNER JOIN B ON A.NAME=B.USERNAME; 通过CASE给满足WHEN语句的数据返回SUM聚合函数要统计的数据,再将SUM进行重命名.推荐. 一般…
数据库结构如图: 而我想让同一个人的不同成绩变成此人在这一行不同列上显示出来,此时分为2中展现: 第一种展现如图----[多行变一列](合并后的数据在同一列上): sql如下: select name ,group_concat(sore Separator ';') as score from stu group by name 第二种展现如图----[多行变多列](合并后的数据在不同列上): sql如下: SELECT name , MAX(CASE type WHEN '数学' THEN…
列转行:利用max(case when then) SELECT `name`, MAX( CASE WHEN course='语文' THEN score END ) AS 语文, MAX( CASE WHEN course='数学' THEN score END ) AS 数学, MAX( CASE WHEN course='英语' THEN score END ) AS 英语 FROM student GROUP BY `name` ; 合并字段显示:利用group_cancat(cour…
最近在复习过程中愈发觉得,有些东西久了不用,真的会忘~——~. 将上面的表格转换为下面的表格 我拼sql拼了好久还是没弄出来,还是偶然看到我以前的笔记,才想起有行转列这样的操作(太久没有写过复杂点的sql了) SELECT YEAR , END ) m1, END ) m2, END ) m3, END ) m4 FROM test_offer GROUP BY year; 要多复习呀,骚年!!!…
SELECTREPLACE(GROUP_CONCAT(IF(ItemID=1101,ItemValue,"")),',',"") AS 'Item1101',REPLACE(GROUP_CONCAT(IF(ItemID=1102,ItemValue,"")),',',"") AS 'Item1102',REPLACE(GROUP_CONCAT(IF(ItemID=1103,ItemValue,"")),',…
直接sql(自己抽离代码,无法和order by rand() 复用): select shit from( select 要累加的字段, @tt:=CONCAT(@tt,',',a.要累加的字段) as shit from 某表 a,(select @tt:='') b ) c ORDER BY LENGTH(c.shit) , 存储过程版本: BEGIN ; ) DEFAULT ''; DECLARE _id INT; ); ; ; OPEN cur; FETCH cur INTO _id,…
MySql行转列 以id分组,把name字段的值打印在一行,逗号分隔(默认) select CustomerDrugCode,group_concat(AuditItemName) from noaudit_drug group by CustomerDrugCode; 以id分组,把name字段的值打印在一行,分号分隔 select CustomerDrugCode,group_concat(AuditItemName separator ';') from noaudit_drug grou…
行转列--两种方法第一种方法:行转列我们通常是使用交叉连接和子查询的方式做到,比如下面的例子,查询每个name的对应id的和mysql> select * from user; +----+------+ | id | name | +----+------+ | | a | | | b | | | c | | | d | | | a | | | a | | | c | | | d | +----+------+ 我们用分组查询能得到每个name的id的和,但是是行的形式展示的.mysql>…