SQL行列转置

--函数
alter function zh()
returns table
as
return(
   select 科目,max(张三) as 张三,max(李四)as 李四
    from(
         select ‘语文‘as 科目,张三,李四
         from stu2
         pivot(max(语文)for 姓名 in (科目,张三,李四))as a
         union all
         select ‘数学‘as 科目,张三,李四
         from stu2
         pivot(max(数学)for 姓名 in (科目,张三,李四))as a )as n
   group by 科目
go
select * from zh()

--存储过程
alter procedure zh1
as

    select 科目,max(张三) as 张三,max(李四)as 李四
    from(
         select ‘语文‘as 科目,张三,李四
         from stu2
         pivot(max(语文)for 姓名 in (科目,张三,李四))as a
         union all
         select ‘数学‘as 科目,张三,李四
         from stu2
         pivot(max(数学)for 姓名 in (科目,张三,李四))as a )as n
    group by 科目

go
exec zh1

原文地址:https://www.cnblogs.com/hellowworld/p/10045237.html

时间: 2024-10-25 09:49:35

SQL行列转置的相关文章

SQL 行列倒置

SQL的的行列倒置已经不是新知识了,但在博主的技术咨询期间,仍发现其实有很多人并不了解这块,所以在此专门写一篇博客记录.本文将以Mysql为例,并以数据采集指标信息获取为例子.在下面的例子,你可以在sqlfiddle运行. 首先我们需要创建数据库Schema: CREATE TABLE Chart (`createTime` DateTime, `kpi` varchar(30), `field` varchar(30), `value` double); INSERT INTO Chart (

简化实现动态行列转置的SQL

动态行列转换的计算在实际业务中非经常见,网上各类技术论坛上都有讨论,比方以下这些问题: http://www.iteye.com/problems/87788 http://bbs.csdn.net/topics/390869577 http://bbs.csdn.net/topics/391000711 http://bbs.csdn.net/topics/391001035 http://bbs.csdn.net/topics/390888703 http://bbs.csdn.net/to

Oracle行列转置

两种简单的行列转置 1.固定列数的行列转换如student subject grade--------- ---------- --------student1 语文 80student1 数学 70student1 英语 60student2 语文 90student2 数学 80student2 英语 100--转换为 语文 数学 英语student1 80 70 60student2 90 80 100--语句如下: 1 select student, 2 sum(decode(subje

SQL行列转换6种方法

在进行报表开发时,很多时候会遇到行列转换操作,很对开发人员针对于SQL级别行列转换操作一直不甚理解,今天正好抽空对其进行了一些简单的总结.这里主要列举3种可以实现SQL行列转换的方法,包括通用SQL解法以及Oracle支持解法. 一.测试数据 测试表依旧采用Oracle经典的scott模式下的dept表和emp表,结构如下: DEPT: create table DEPT ( DEPTNO NUMBER(2) not null, DNAME VARCHAR2(14), LOC VARCHAR2(

Excel 行列转置 解决竖向拉,字母跟着递增的问题

今天工作中遇到需要将Excel行列转置涉及到的数据单元格一共几千个 查询网上说可以通过复制粘贴单元格,粘贴选项中转置一项实现,但是所涉及的sheet页中,数据格式和单元格格式各不一样,转置失败! 怎么做呢? 先看看查询Excel函数的结果: 首先看看INDERECT函数的定义:返回字符串所指定的索引 比如: 有了这个函数,解决当前问题的思路就是在竖向拖动的时候,能对应到INDIRECT("A1"),INDIRECT("B1"),INDIRECT("C1&q

Excel-怎样实现行列转置

有时候,我们为了某些需要,必须把工作表的行列进行转置的方式显示.重新输入很浪费时间,怎样简单的实现转置呢,强大的excel2007提供了此项功能,具体怎么做,下面看我来演示一下. 工具/原料 装有excel2007的电脑一台 步骤/方法 如图所示,选中要进行行列转置的单元格区域.   选择"开始"选项卡,在"剪贴板"组中单击"复制"图标. 步骤阅读   在工作表中选中目标粘贴区域的左上角单元格.如图所示.   单击"剪贴板"组

还在傻傻用Ctrl+C和Ctrl+V吗?这2个行列转置方法助你效率提80%!

Excel行转为列,列转为行的例子特别常见,以下这两个方法可以帮助你解决99%行列转置问题! 点击文章右上角给小编一个"关注"鼓励,谢谢您! 我们先来对比下面两张图片: 当下面表格的名字越来越多时,表格也就越来越来,查看也就越来越麻烦. 而下面这个表格显示看起来比较舒心,这也是我们平时制作表格的方式. 那么通过对比,我们知道哪个图片才是我们想要的.但是有时候别人发给我们的表格并不是我们想要的方式,而且数据量很大,这时该用什么方法变成我们想要的呢? 方法一:使用"选择性粘贴&q

SQL行列乾坤大挪移

"生活总是这样,有时候,你需要一个苹果,但别人却给了你一个梨." 今天dalao邮件里需要添加一张每月累计长长的图,可是,拿到手上的SQL导出数据不符合我最爱的pyecharts的数据输入格式,头大. 获得到的数据 日期 种类 数量 9012-01-01 香蕉 10 9012-01-01 苹果 99 9012-01-01 梨 9 9012-01-02 香蕉 100 9012-01-02 苹果 999 9012-01-02 梨 99 pyecharts想要的数据 日期 香蕉 苹果 梨 9

SQL Server中行列转置方法

PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P 完整语法: table_source PIVOT( 聚合函数(value_column) FOR pivot_column IN(<column_list>) ) UNPIVOT用于将列明转为列值(即列转行),在SQL Server 2000可以用UNION来实现 完整语法: table_sou