weixin_45438833
lostcanvos
采纳率100%
2020-01-06 21:18 阅读 418

求助! MySQL中 一列中有多个相同元素,另一列元素不同,怎么展开相同的那一列 如图

将图一表的内容查询为图二的效果
图片说明

                (图一)

图片说明

                 (图二)
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    lhzlhk lhzlhk 2020-01-07 13:44

    这是在 SQL 里实现透视(pivot),通用的是用 case 表达式。
    select name,
    max(case when subject = '语文' then score else null end) as 语文, // 这里需要使用聚合函数,max、min 什么的都行
    max(case when subject = '数学' then score else null end) as 数学,
    max(case when subject = '英语' then score else null end) as 英语
    from tblName
    group by name

    点赞 1 评论 复制链接分享
  • zqbnqsdsmd zqbnqsdsmd 2020-01-07 01:38
    点赞 1 评论 复制链接分享
  • qq_36720114 德玛洗牙 2020-01-07 10:04

    select name,(select score from 表 t1 where t1.name=t.name and subject='语文') as 语文,
    (select score from 表 t2 where t2.name=t.name and subject='数学') as '数学',
    (select score from 表 t3 where t3.name=t.name and subject='英语') as '英语'
    from 表 t group by name;

    点赞 1 评论 复制链接分享
  • weixin_43490914 微风轻轻 起 2020-01-07 17:14

    SELECT NAME,
    MAX(DECODE(SUBJECT,'语文',SCORE)),
    MAX(DECODE(SUBJECT,'数学',SCORE)),
    MAX(DECODE(SUBJECT,'英语',SCORE))
    FROM TABLE1
    GROUP BY NAME

    点赞 1 评论 复制链接分享

相关推荐