SQLServer如何处理数据集的维度变化
Student表有三列,分别是姓名、课程、成绩
Name Curricula Mark
张三 语文 70
李四 数学 80
王朝 英语 59
城南 马哲 70
王朝 语文 90
我想得到的效果是,列出各个学科及格的人名:
语文 化学 数学
张三 李四
王朝
学科不止3门,可能有八门怎么弄呢?其实这就是典型的维度方向变化.
准备数据:
create table stgrade(Name varchar(10), Curricula varchar(10) , Mark int);
go
insert into stgrade values('张三' , '语文','70' );
insert into stgrade values('李四' , '数学','80');
insert into stgrade values('王朝' , '英语','59');
insert into stgrade values('城南' , '马哲','70' );
insert into stgrade values('王朝' , '语文','90' );
go
select * from stgrade;
Name Curricula Mark
张三 语文 70
李四 数学 80
王朝 英语 59
城南 马哲 70
王朝 语文 90
用case when 来实现根据column的值来返回同一行别的column的值,因为我们这里不需要分数,只关心Curricula 和name,所以是在分数赛选过后,进行一个case when操作.
select
case when Curricula='语文' then name end 语文,
case when Curricula='数学' then name end 数学,
case when Curricula='英语' then name end 英语,
case when Curricula='马哲' then name end 马哲
from stgrade where mark>59
语文 数学 英语 马哲
张三 NULL NULL NULL
NULL 李四 NULL NULL
NULL NULL NULL 城南
王朝 NULL NULL NULL
又上面已经可以看到结果集合已经初具雏形了,要是更让每个column下的NULL消失,然后后面行的值补上来就能达到我们的要求了。
select
case when Curricula='语文' then name end 语文,
case when Curricula='数学' then name end 数学,
case when Curricula='英语' then name end 英语,
case when Curricula='马哲' then name end 马哲,
sn
from
(
select curricula,name,mark,
row_number() over(partition by curricula order by name) sn
from stgrade where mark>59
) t
语文 数学 英语 马哲 sn
NULL NULL NULL 城南 1
NULL 李四 NULL NULL 1
王朝 NULL NULL NULL 1
张三 NULL NULL NULL 2
select sn,
max(case when Curricula='语文' then name end) 语文,
max(case when Curricula='数学' then name end) 数学,
max(case when Curricula='英语' then name end) 英语,
max(case when Curricula='马哲' then name end) 马哲
from
(
select curricula,name,mark,
row_number() over(partition by curricula order by name) sn
from stgrade where mark>59
) t
group by sn
sn 语文 数学 英语 马哲
1 王朝 李四 NULL 城南
2 张三 NULL NULL NULL
SQLServer如何处理数据集的维度变化的更多相关文章
- 深度学习实践-物体检测-faster-RCNN(原理和部分代码说明) 1.tf.image.resize_and_crop(根据比例取出特征层,进行维度变化) 2.tf.slice(数据切片) 3.x.argsort()(对数据进行排列,返回索引值) 4.np.empty(生成空矩阵) 5.np.meshgrid(生成二维数据) 6.np.where(符合条件的索引) 7.tf.gather取值
1. tf.image.resize_and_crop(net, bbox, 256, [14, 14], name) # 根据bbox的y1,x1,y2,x2获得net中的位置,将其转换为14*1 ...
- SSAS多维数据集以及维度的建立
首先打开vs建立一个Analysis Services项目,然后点击数据源文件右键[新建数据源],根据数据源向导建立自己的数据源,如图1: 点击[确定],选择刚才的数据连接,点击[下一步]进入模拟信息 ...
- Pytorch-tensor的维度变化
引言 本篇介绍tensor的维度变化. 维度变化改变的是数据的理解方式! view/reshape:大小不变的条件下,转变shape squeeze/unsqueeze:减少/增加维度 transpo ...
- Sqlserver存储过程生成日期维度
话不多说,之前已经有一篇日志是利用oracle的存储过程生成日期维度表,接下来我们就用sqlserver来实现这个操作,如下面的步骤所示 1:创建日期维度表(Dim_time) USE [DW] GO ...
- sqlserver 理解数据集
数据集分四类: 1.A∩B,既是所求数据集既在A中,又在B中 2.A∪B,既所求数据在数据集A中,或在数据集B中 3.A-B,既所求数据在数据集A中,不在数据集B中 4.B-A,既所求数据在数据集B中 ...
- 监测SQLServer数据库中表的数据变化 方案
sqlDependency提供了这样一种能力:当被监测的数据库中的数据发生变化时,SqlDependency会自动触发OnChange事件来通知应用程序,从而达到让系统自动更新数据(或缓存)的目的. ...
- 经典网络LeNet5看卷积神经网络各层的维度变化
本文介绍以下几个CNN经典模型:Lenet(1986年).Alexnet(2012年).GoogleNet(2014年).VGG(2014年).Deep Residual Learning(2015年 ...
- 微软BI 之SSAS 系列 - 多维数据集维度用法之三 多对多维度 Many to Many
开篇介绍 对于维度成员和事实数据直接的关系看到更多的可能还是一对一,一对多的关系.比方在事实维度(或退化维度)中一个订单和明细号组合而成的ID,对应的就是事实表中的一条数据,这就是一对一的关系.比方说 ...
- 8.进行图片的裁剪,同时使用resize将图片的维度进行变化
1.img.crop((x1, y1, x2, y2)) 进行图片的裁剪 参数说明: x1, y1, x2, y2 表示图片的大小 2. img.resize((w, h)) # 进行图片的维度变化 ...
随机推荐
- sum()over()和count()over()分析函数
创建测试表 ),sales ),dest ),dept ),revenue number); 插入测试数据 ); ); ); ); ); ); ); commit; 查看表记录 SQL> sel ...
- linux 2.6.37-3.x.x x86_64
/* * linux 2.6.37-3.x.x x86_64, ~100 LOC * gcc-4.6 -O2 semtex.c && ./a.out * 2010 sd@fuckshe ...
- C里面的类型字节长度和范围
32位平台 char 1个字节8位 short 2个字节16位 int 4个字节32位 long 4个字节 long long 8个字节 指针 4个字节 64位平台 char 1个字节 short 2 ...
- Nginx 笔记与总结(8)Location:归纳总结
首先对 URI 进行精准匹配,如果匹配上则退出匹配,返回精准匹配结果: 如果没有匹配上则寻找普通匹配,如果命中多个普通匹配,则记忆最长的匹配结果(不考虑 location 的顺序): 如果后面还有正则 ...
- HTTP 笔记与总结(1 )Telnet 分别发送 HTTP GET 和 HTTP POST 请求
简化的说: WebService = HTTP 协议 + XML Rest = HTTP 协议 + Json 各种 API = HTTP 协议 + XML / Json 来实现 HTTP 请求信息格式 ...
- Oracle Merge Into 用法详解
原文:http://blog.csdn.net/EdgenHuang/article/details/3587912 Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行in ...
- [转]20个高级Java面试题汇总
http://saebbs.com/forum.php?mod=viewthread&tid=37567&page=1&extra= 这是一个高级Java面试系列题中的第一部分 ...
- Programs vs. processes
Computer Systems A Programmer's Perspective Second Edition This is a good place to pause and make su ...
- vm设置静态ip
1. 进入虚拟linux系统中,vim /etc/sysconfig/network-scripts/ifcfg-eth0,里面保留以下内容即可: DEVICE=eth0 //使用的网卡标识 BOOT ...
- Apache Camel
Apache Camel 1 import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; i ...