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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • unity3d的入门教程_3D网课

    unity3d的入门教程_3D网课参考链接:《Unity3D初级课程之新手入门》文章目录第一课:课程介绍与Unity3D环境搭建一、Unity下载与安装第二课:游戏场景基本操作一、新建项目与新建场景二、基本3D物体的创建三、Scene面板基础操作第三课:游戏场景制作3D模型一、尺寸与方向二、3D模型制作第四课:3D模型美化之材质球一、材质球与贴图二、创建与使用材质球三、shader简介第五课:3D模型重用之预制体一、父子关系二、预制体第六课:基本组件之摄像机一、场景美化第一课:课程介绍与Unity3D环境搭建一、Unity下

    2022年8月10日
    3
  • VMware的Linux虚拟机桥接模式突然上不了网解决方法「建议收藏」

    VMware的Linux虚拟机桥接模式突然上不了网解决方法「建议收藏」虚拟机的IP、子网掩码、默认网关、DNS设置得与宿主机在同一子网,虚拟机桥接模式一直以来都可以正常上网,但突然有一天就不能上网了,还死活ping不通外网、网关。此时只需将VM的虚拟网络编辑器中关于桥接模式的设置改一下就行了,具体步骤如下。1、右键点击window系统网络状态那个图标,单击打开“网络和Internet”设置。2、点击更改适配器选项。3、查看window系统联网使用的网卡,记住设备名。4、打开VMware,点击编辑>虚拟网络编辑器。5、在弹出界面点击更改设置。6、桥接模式选

    2022年5月29日
    156
  • 平凡的推送广告_朋友圈推送的广告怎么查找

    平凡的推送广告_朋友圈推送的广告怎么查找智能手机的广泛使用,使广告行业有了新一轮的冲击,并随之产生了新的广告模式之一——推送广告模式。什么是推送广告?    推送广告就是在通知栏显示出来的广告信息。这是一种新的移动广告业务,通过推送功能来实现营销目的,当然,APP开发者也通过它来获取了盈利。与传统的Banner广告条相比,推送广告可以与APP分离,既不占用屏幕内容,也不会对用户在体验APP过程中产生任何影响,因为它本身就

    2022年10月5日
    0
  • Windows安装gitlab_Windows7

    Windows安装gitlab_Windows7文章目录一、下载指引二、安装说明三、配置信息一、下载指引在Windows上使用Git,可以从Git官网https://git-scm.com/直接下载安装程序,然后按默认选项安装即可。StandaloneInstaller:安装版,安装完之后会自动在鼠标右键时显示GitGUIHere和GitBashHere(推荐)Portable(“thumbdriveedition”):绿色版,解压就能运行,免安装,不过绿色版不会在鼠标右键时显示GitGUIHere和Gi

    2022年9月8日
    0
  • vs2010中文简体版下载链接(含中文msdn)

    vs2010中文简体版下载链接(含中文msdn)昨天朋友说vs2010中文版能够下载了,自己開始还不相信,正好周末,于是就下载了试一下安装了果然是中文版,本来是msdn订阅用户才干够下载的,感谢上传的网友。文件名称cn_visual_studio

    2022年7月1日
    17
  • Java代码输出是“father”还是“child”(二)

    Java代码输出是“father”还是“child”(二)

    2022年2月6日
    44

发表回复

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

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