分享

sql PIVOT 行转列

 johnny_net 2019-04-13

基本语法

数据源 PIVOT( 

列(匹配列的数据值 转换后为一行) 

FOR

列(需要放到行标题的那一列,转换后为固定标题值) IN (列名称)

)

e.g

有数据:

UserNameSubjectScore

张三                     语文80

张三                     数学90

张三                     英语70

张三                     生物85

李四                     语文80

李四                     数学92

李四                     英语76

李四                     生物88

sql语句:

  SELECT * FROM Table

PIVOT (

  sum(Score) FOR subject 

  IN ([语文],[数学],[英语],[生物])

) AS T

结果:

UserName 语文 数学 英语 生物

李四                 80 92 76 88

张三                 80 90 70 85

--------------------------------------------------

但在大多数情况下,我们的数据源很有可能是表连接的结果,只需要做个简单转换即可

 SELECT * FROM (

SELECT * FROM Table 

left join .... ) P

PIVOT (

  sum(Score) FOR subject 

  IN ([语文],[数学],[英语],[生物])

) AS T

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约