粘贴行列如何转换_sql实现行转列

粘贴行列如何转换_sql实现行转列假如现在我们有这样一张表,命名为TB_STUDENT_SCORE 表中内容为: 可能会用到pivot的常见情况是:需要生成交叉表格报表以汇总数据。例如,假设需要在TB_STUDENT_SCORE表中中查询 学生姓名,各科成绩,总分,平均分,名称以生成报表。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

假如现在我们有这样一张表,命名为TB_STUDENT_SCORE

 

表中内容为:

粘贴行列如何转换_sql实现行转列

 

可能会用到pivot的常见情况是:需要生成交叉表格报表以汇总数据。例如,假设需要在 TB_STUDENT_SCORE表中中查询 学生姓名,各科成绩,总分,平均分,名称以生成报表。

如下图所示:

粘贴行列如何转换_sql实现行转列

 

以下是带批注的 PIVOT 语法。

SELECT <非透视的列>,

    [第一个透视的列] AS <列名称>,

    [第二个透视的列] AS <列名称>,

    …

    [最后一个透视的列] AS <列名称>,

FROM

    (<生成数据的 SELECT 查询>)

    AS <源查询的别名>

PIVOT

(

    <聚合函数>(<要聚合的列>)

FOR

[<包含要成为列标题的值的列>]

    IN ( [第一个透视的列], [第二个透视的列],

    … [最后一个透视的列])

) AS <透视表的别名>

<可选的 ORDER BY 子句>;

 

 

 

 

pivot_column 和 value_column 是 PIVOT 运算符使用的分组列。PIVOT 遵循以下过程获得输出结果集:

  1. 对分组列的 input_table 执行 GROUP BY,为每个组生成一个输出行。

    输出行中的分组列获得 input_table 中该组的对应列值。

  2. 通过执行以下操作,为每个输出行生成列列表中的列的值:
    1. 针对 pivot_column,对上一步在 GROUP BY 中生成的行另外进行分组。

      对于 column_list 中的每个输出列,选择满足以下条件的子组:

      pivot_column = CONVERT(<data type of pivot_column>, 'output_column')

    2. 针对此子组上的 aggregate_function 对 value_column 求值,其结果作为相应的 output_column 的值返回。如果该子组为空,SQL Server 将为该 output_column 生成 Null 值。如果聚合函数是 COUNT,且子组为空,则返回零 (0)。

在上述列子中,我们可以用以下SQL完成其功能
1.首先使用PIVOT进行行列转换

 

2.使用开窗函数统计学生成绩

 

3.去除重复行

 

 

最终,得到
粘贴行列如何转换_sql实现行转列

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

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

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


相关推荐

  • smartctl用法心得

    smartctl用法心得SMART简介S.M.A.R.T.,全称为“Self-MonitoringAnalysisandReportingTechnology”,即“自我监测、分析及报告技术”。是一种自动的硬盘状态检测与预警系统和规范。通过在硬盘硬件内的检测指令对硬盘的硬件如磁头、盘片、马达、电路的运行情况进行监控、记录并与厂商所设定的预设安全值进行比较,若监控情况将或已超出预设安全值的安全范围,就可以通过主机的监控硬件或软件自动向用户作出警告并进行轻微的自动修复,以提前保障硬盘数据的安全。除一些出厂时间极早的硬盘外,现

    2022年10月8日
  • FFM原理理解与应用

    FFM原理理解与应用本文参考了美团团队的介绍文章。http://tech.meituan.com/deep-understanding-of-ffm-principles-and-practices.html以及http://blog.csdn.net/zc02051126/article/details/54614230FM和FFM模型是最近几年提出的模型,凭借其在数据量比较大并且特征稀疏的情况下,…

    2022年4月30日
  • Substance Painter 画高度贴图

    Substance Painter 画高度贴图SP可以画出来高度图,而省去了建模的流程。很方便!然后用默认的画笔和Alpha可以得到很细腻的效果,最后导出法线贴图就可以了

    2022年5月26日
  • 虚拟IP是什么?

    虚拟IP是什么?要是单讲解虚拟IP,理解起来很困难,所以干脆把动态IP、固定IP、实体IP与虚拟IP都讲解一下,加深理解和知识扩展实体IP:在网络的世界里,为了要辨识每一部计算机的位置,因此有了计算机IP位址的定义。一个IP就好似一个门牌!例如,你要去微软的网站的话,就要去『207.46.197.101』这个IP位置!这些可以直接在网际网络上沟通的IP就被称为『实体IP

    2022年10月20日
  • 关于配置tnsnames来使用PLSQL连接数据库「建议收藏」

    关于配置tnsnames来使用PLSQL连接数据库

    2022年2月1日
  • armv7在哪儿看(armv7s)

    iOS中的armv7,armv7s,arm64,i386,x86_64都是什么在做静态库的时候以及引用静态库的时候经常会遇到一些关于真机模拟器不通用的情况,会报错找不到相应库导致编译失败,这里简单记录一下各种设备支持的架构。iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器,模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器…

    2022年4月11日

发表回复

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

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