sql语句,一个id对应多条数据,如何转换为一条?

奔跑啊天行者 2016-12-28 10:19:09
数据如下:
ID SEG MMM NNN
123 1 A AA
123 2 B BB
123 3 C CC
我想转换成下面的格式:
ID MMM_1 NNN_1 MMM_2 NNN_2 MMM_3 NNN_3
123 A AA B BB C CC

MMM_1,NNN_1就是SEG=1时的MMM,NNN,2和3类似。
请问怎么通过sql语句实现?
...全文
927 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
crusher395 2017-01-07
  • 打赏
  • 举报
回复
SELECT id, 
 max(if(seg=1, mmm, null)) mmm_1, max(if(seg=1, nnn, null)) nnn_1,
 max(if(seg=2, mmm, null)) mmm_2, max(if(seg=2, nnn, null)) nnn_2,
 max(if(seg=3, mmm, null)) mmm_3, max(if(seg=3, nnn, null)) nnn_3 
FROM `t2` 
group by id
完美解决
奔跑啊天行者 2017-01-07
  • 打赏
  • 举报
回复
谢谢大家的帮助!
粗人-512794511 2017-01-06
  • 打赏
  • 举报
回复
如果你只是临时处理一下!还是放在表格里面处理 或者程序来处理更合理方便!如果你的表就这样设计的.尽量改掉吧
xinhaoda 2017-01-06
  • 打赏
  • 举报
回复
要把第二行、第三行。转换增加4个字段。 目前看你可能是使用了纵表
rucypli 2016-12-29
  • 打赏
  • 举报
回复
拷贝到excel用行列转换
致命的西瓜 2016-12-29
  • 打赏
  • 举报
回复
如果行数不确定不建议在数据库做这种需求,在服务端或者前端代码里写
奔跑啊天行者 2016-12-29
  • 打赏
  • 举报
回复
引用 1 楼 wangjian0228 的回复:
用case when 行转列 不过这个需求感觉不是很合理
能写下具体语句吗?还有就是不只有这三条数据的,还有很多ID的
致命的西瓜 2016-12-29
  • 打赏
  • 举报
回复
用case when 行转列 不过这个需求感觉不是很合理
ACMAIN_CHM 2016-12-29
  • 打赏
  • 举报
回复
select * from 数据如下 t1, 数据如下 t2,数据如下 t3 where t1.ID =t2.ID and t1.ID =t3.ID and t1.SEG=1 and t2.SEG=2 and t3.SEG=3
奔跑啊天行者 2016-12-29
  • 打赏
  • 举报
回复
引用 4 楼 rucypli 的回复:
拷贝到excel用行列转换
转换不行吧那样不是每个字段都占一行了
奔跑啊天行者 2016-12-29
  • 打赏
  • 举报
回复
引用 3 楼 wangjian0228 的回复:
如果行数不确定不建议在数据库做这种需求,在服务端或者前端代码里写
这是自己论文里用到的数据要处理,没有服务端啥的

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧