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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 产品经理面试内容_产品专员简历

    产品经理面试内容_产品专员简历前言经过深思熟路后,本渣决定参加放弃研发转投产品了。本科,硕士所学的东西也不能说可惜,这些都会帮助我在产品岗位更进一步。那么在研究与学习之下,我来研究一下产品经理的简历如何投能不当炮灰。(现在写好加深一下印象,也方便一下一年后写简历参加秋招的小周。)思路:PM的面试简历,就是一份产品产品用户:HR,业务主管简历被HR的阅读时间很短,15S左右,且较为粗略。所以就需要满足d…

    2025年7月11日
    3
  • Pulseaudio入门介绍(一)

    Pulseaudio入门介绍(一)网络资源 pulseaudio故障排除https://wiki.archlinux.org/index.php/PulseAudio/Troubleshooting这里是pulseaudio的可能故障及解决办法,例如破音等,可以参考下。 (注ArchLinux:这个网站可以先mark,有很多别的知识,比如蓝牙,wifi,网络,蓝牙耳机,pulseaudio如何配置蓝牙耳机等,…

    2022年4月20日
    61
  • 用java输出语句_Java的常用输入输出语句

    用java输出语句_Java的常用输入输出语句一、概述输入输出可以说是计算机的基本功能。作为一种语言体系,java中主要按照流(stream)的模式来实现。其中数据的流向是按照计算机的方向确定的,流入计算机的数据流叫做输入流(inputStream),由计算机发出的数据流叫做输出流(outputStream)。Java语言体系中,对数据流的主要操作都封装在java.io包中,通过java.io包中的类可以实现计算机对数据的输入、输出操作。在编…

    2022年7月7日
    21
  • sql修改字段类型和长度

    sql修改字段类型和长度标准SQL修改字段类型和长度语句:ALTERTABLEtableNamemodifycolumncolumnName类型;例如Mysql的修改字段类型语句:altertabletestmodifycolumnnamevarchar(255);Oracle修改字段类型和长度语句:ALTERTABLEtableNamemodify(columnNa

    2022年6月12日
    107
  • RPC和REST的区别(转)

    RPC和REST的区别(转)

    2021年5月9日
    108
  • linux清除文件内容 >,Linux清除文件内容的几种方法[通俗易懂]

    linux清除文件内容 >,Linux清除文件内容的几种方法[通俗易懂]#清空或删除大文件内容的五种方法:#法一:通过重定向到Null来清空文件内容$>test.sh#法二:使用‘true’命令重定向来清空文件$true>test.sh#可通过下列命令来查看文件容量是否为0$du-htest.sh0test.sh#法三:使用cat/cp/dd实用工具及/dev/null设备来清空文件$cat/dev/null…

    2022年7月26日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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