CREATE TABLE [test](
[date] VARCHAR2,
[result] VARCHAR2);
-- 将纵向数据,横向统计
select date, max(win) '胜', max(loss) '负' from ( SELECT distinct date,
CASE result WHEN '胜' THEN count(result) ELSE 0 END win,
CASE result WHEN '负' THEN count(result) ELSE 0 END loss
FROM test group by date, result) group by date;
源数据.png
结果.png
将一个字段,拆成多个字段,再拼接成一个字段
将1,2,3一个字段拆成3行,然后找到对应的title,再拼接成一个字段
SELECT
'192.168.1.1' ,
SUBSTRING_INDEX( '192.168.1.1' , '.', 1 ) AS a,
SUBSTRING_INDEX(SUBSTRING_INDEX( '192.168.1.1' , '.', 2 ),'.',-1) AS b,
SUBSTRING_INDEX(SUBSTRING_INDEX( '192.168.1.1' , '.', -2 ),'.',1) AS c,
SUBSTRING_INDEX( '192.168.1.1' , '.', -1 ) AS d
拆分字符串.png
多行记录拼接成一行
select group_concat(title) from role where idnum in (select substring_index(substring_index(mr.role_idnum,',',r.idnum+1),',',-1) as idnum from member_role mr join (select (@ROW :=@Row + 1) as idnum from role,(select @Row:=-1) zz) r on r.idnum < (length(mr.role_idnum) - length(replace(mr.role_idnum,',',''))+1));
连接字符串.png
网友评论