python 列转行_SQL 行转列,列转行「建议收藏」

python 列转行_SQL 行转列,列转行「建议收藏」SQL行转列,列转行行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧。行列转换就是如下图所示两种展示形式的互相转换行转列假如我们有下表:SELECT*FROMstudentPIVOT(SUM(score)FORsubjectIN(语文,数学,英语))通过上面SQL语句即可得到下面的结果PIVOT后跟一个聚合函数来拿到结果,FOR后面跟的科目是我们要…

大家好,又见面了,我是你们的朋友全栈君。

SQL 行转列,列转行

行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧。

行列转换就是如下图所示两种展示形式的互相转换

python 列转行_SQL 行转列,列转行「建议收藏」

行转列

假如我们有下表:

python 列转行_SQL 行转列,列转行「建议收藏」

SELECT *

FROM student

PIVOT (

SUM(score) FOR subject IN (语文, 数学, 英语)

)

通过上面 SQL 语句即可得到下面的结果

python 列转行_SQL 行转列,列转行「建议收藏」

PIVOT 后跟一个聚合函数来拿到结果,FOR 后面跟的科目是我们要转换的列,这样的话科目中的语文、数学、英语就就被转换为列。IN 后面跟的就是具体的科目值。

当然我们也可以用 CASE WHEN 得到同样的结果,就是写起来麻烦一点。

SELECT name,

MAX(

CASE

WHEN subject=’语文’

THEN score

ELSE 0

END) AS “语文”,

MAX(

CASE

WHEN subject=’数学’

THEN score

ELSE 0

END) AS “数学”,

MAX(

CASE

WHEN subject=’英语’

THEN score

ELSE 0

END) AS “英语”

FROM student

GROUP BY name

使用 CASE WHEN 可以得到和 PIVOT 同样的结果,没有 PIVOT 简单直观。

列转行

假设我们有下表 student1

python 列转行_SQL 行转列,列转行「建议收藏」

SELECT *

FROM student1

UNPIVOT (

score FOR subject IN (“语文”,”数学”,”英语”)

)

通过 UNPIVOT 即可得到如下结果:

python 列转行_SQL 行转列,列转行「建议收藏」

我们也可以使用下面方法得到同样结果

SELECT

NAME,

‘语文’ AS subject ,

MAX(“语文”) AS score

FROM student1 GROUP BY NAME

UNION

SELECT

NAME,

‘数学’ AS subject ,

MAX(“数学”) AS score

FROM student1 GROUP BY NAME

UNION

SELECT

NAME,

‘英语’ AS subject ,

MAX(“英语”) AS score

FROM student1 GROUP BY NAME

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151086.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • soapui的教程

    soapui的教程一.这里我安装的是5.2.1这个版本,安装之后按照我的操作步骤即可二.这里放入后台给你的接口,结尾应该是?wsdl如果没有你需要手动加上,否则会报错三:这个是成功界面四:如图,点开之后是这样的,在1的地方你需要输入对应的参数点击4进行查询,查询成功右侧会有对应的xml数据结果,具体参数需要输入什么,应用场景不同可以去问下后台这篇博客基本结合我的另一篇的ksoap2框架的博客一起使用…

  • linux查看文件和目录

    linux查看文件和目录linux查看文件和目录

  • kernel dma protection_系统感知进程的唯一实体是

    kernel dma protection_系统感知进程的唯一实体是为BCG界面库的记忆特性所晕倒同事使用BCGControlBarPro处理界面,今天在修改菜单资源时却发生一件很奇怪的事情:无论怎么修改,程序运行后始终显示的还是改动以前的菜单,多次清空临时文件、生成文件以及重新编译也无济于事。同事为此折腾了一个上午,郁闷得不行。我用UltraEdit搜索了一下整个工程,并没有发现以前的字符串资源,因此排除了是编译器的问题。不是编译器的问题,那么就只能是BCG的问题了,我怀疑是BCG对资源进行了“记忆”处理,为了验证这一想法,我让同事将新生成的程序拷贝到一台没有使用过该程序

  • oracle报错未明确定义列_查询块具有不正确的结果列数

    oracle报错未明确定义列_查询块具有不正确的结果列数运行环境:Oracle10gsqlplus环境下。 在查询语句中,经常会出现一个错误: SQL基础:ORA-00918:未明确定义列的错误。 当前遇到有两种情况。原因为:当查询语句中,查询的表(数据集)中有相同的字段名,查询字段无法确认是改查那个字段 时,就会报未明确定义列的错误。 第一种情况: 1.单表时: 比如fconsign表中存在三个字段:fcsg_c

  • phpstorm 2021 激活码【中文破解版】

    (phpstorm 2021 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlS32PGH0SQB-eyJsaWN…

  • 示例化讲解RIP路由更新机制

    示例化讲解RIP路由更新机制

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号