mysql列边行_mysql-行转列、列转行

group_concat(),函数说明

手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果;

通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。

1、行转列

-- 不转sql语句

SELECT t2.HIERARCHY_ID FROM t_hierarchy t2 WHERE t2.`DEPARTMENT_PID` = (SELECT t1.DEPARTMENT_ID FROM t_staff t1 WHERE t1.id = 3) AND t2.`TYPE`=1030 AND STATUS=1

-- 将行转列以","隔开

SELECT GROUP_CONCAT(t2.HIERARCHY_ID SEPARATOR ',') FROM t_hierarchy t2 WHERE t2.`DEPARTMENT_PID` = (SELECT t1.DEPARTMENT_ID FROM t_staff t1 WHERE t1.id = 3) AND t2.`TYPE`=1030 AND STATUS=1;

-- 将行转列以","隔开,如果填上其他符号则是以","+符号隔开

SELECT GROUP_CONCAT(t2.HIERARCHY_ID,'') FROM t_hierarchy t2 WHERE t2.`DEPARTMENT_PID` = (SELECT t1.DEPARTMENT_ID FROM t_staff t1 WHERE t1.id = 3) AND t2.`TYPE`=1030 AND STATUS=1;

-- 将行转列以","隔开

SELECT GROUP_CONCAT(t2.HIERARCHY_ID) FROM t_hierarchy t2 WHERE t2.`DEPARTMENT_PID` = (SELECT t1.DEPARTMENT_ID FROM t_staff t1 WHERE t1.id = 3) AND t2.`TYPE`=1030 AND STATUS=1;

a5f79a3b-283f-3db8-8424-4c920717dda0.png

(不转输出)

a5d1a29a-1e65-32e9-98ee-cd2695be6d5c.png

(行转列后输出)

2、行转列列传行更具体例子

1、查看数据

SELECT * FROM tabName ;

b0c4db6fb981460abbe4c5856ce9b06e.png

2、列转行统计数据

SELECT DATE ,

MAX(CASE NAME WHEN '小说' THEN Scount ELSE 0 END ) 小说,

MAX(CASE NAME WHEN '微信' THEN Scount ELSE 0 END ) 微信

FROM TabName

GROUP BY DATE

167ea6a5938d50fd43c2afdf4a92b1f4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值