code

2019-11-05  本文已影响0人  C_G__

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
上一篇 下一篇

猜你喜欢

热点阅读