SQL SERVER 一组数据按规律横着放置,少则补空,如人员按一进一出的规律,进出为一组,缺少的补null
假设一组数据:人员进出刷卡数据表【SwingCard】
ID | MenID | Door |
1 | 1 | In |
2 | 1 | In |
3 | 1 | Out |
4 | 1 | In |
5 | 1 | Out |
6 | 1 | Out |
想要变成如下:一进一出为一组横着排放,缺少数据的补null
MenID | Door1 | Door2 |
1 | In | null |
1 | In | Out |
1 | In | Out |
1 | null | Out |
实现:
--重新排序,序号为浮点型,装入临时表#Copy
select MenID,Door,Row=(Row_Number() over(order by ID)+0.0) into #Copy from SwingCard
--插入一行空数据到临时表#Copy头部
insert into #Copy(MenID,Door,Row) values (1,null , 0.0)
--相邻之间错位连接
with tempLink as (select a.MenID,a.Door Door1,b.Door Door2,a.Row from #Copy a left join #Copy b on a.Row=b.Row-1),
--将相邻之间Door相同的查出来(Door相同,表示该处缺少数据)
tempLoss as (select MenId,Null Door,Row+0.5 Row from tempLink where Door1=Door2)
--将缺少的数据补到#Copy
insert into #Copy(MenID,Door,Row) select * from tempLoss;
--对插入数据的临时表#Copy重新排序(此时临时表已经补全数据)
with tempNew as (select top 100000 MenID,Door,Row=Row_Number() Over(order by Row) from #Copy),
--相邻之间再次错位连接
with tempNewLink as (select a.MenID,a.Door Door1,b.Door Door2 from tempNew a left join tempNew b on a.Row=b.Row-1)
--获取正确数据
select * from tempNewLink where Door1='In' or Door2='Out'
--删除临时表
drop table #Copy
SQL SERVER 一组数据按规律横着放置,少则补空,如人员按一进一出的规律,进出为一组,缺少的补null的更多相关文章
- SQL Server 变更数据捕获(CDC)监控表数据
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现过程(Realization) 补充说明(Addon) 参考文献(References) ...
- SQL Server 迁移数据到MySQL
一.背景 由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL:由于涉及的表比较多,所以想在MySQL中生成对应 ...
- 在SQL Server中将数据导出为XML和Json
有时候需要一次性将SQL Server中的数据导出给其他部门的也许进行关联或分析,这种需求对于SSIS来说当然是非常简单,但很多时候仅仅需要一次性导出这些数据而建立一个SSIS包就显得小题大做 ...
- ORACLE和SQL SERVER的数据同步常用方法
ORACLE和SQL SERVER的数据同步常用方法 1. 自己编程,或者第三方工具2. 在sqlserver中,使用linkedserver,访问oracle,然后编写job进行数据同步3. 在or ...
- 《转》SQL Server 2008 数据维护实务
SQL Server 2008 数据维护实务 http://blog.csdn.net/os005/article/details/7739553 http://www.cnblogs.com/xun ...
- 数据库迁移(SQL SERVER导入数据到MySql)
地址:http://blog.csdn.net/jiaohougenyang/article/details/44937801 背景:项目最开始时使用的是SQL Server数据库,业务需求现要将数据 ...
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...
- SQL Server GUID 数据迁移至MongoDB后怎样查看?
关键字:SQL Server NEWID():BSON:MongoDB UUID 1.遇到的问题和困惑 SQL Server中的NEWID数据存储到MongoDB中会是什么样子呢?发现不能简单的通过此 ...
- sql server导出数据,远程连接失败,需要设置权限
在sql server management中右键当前连接——>方面 在 服务器配置中 将 RemoteAccessEnabled.RemoteDacEnabled设置为TRUE 安全性—— ...
- sql server复制数据到excel格式变成字符串
sql server复制数据到excel格式变成字符串,结果数据都保存在第一个格子里面. 我点击连同标题一起复制,然后粘贴到excel,结果是这样子的.... 这不是我想要的结果,在网上查询了好多,结 ...
随机推荐
- 【一】、搭建Hadoop环境----本地、伪分布式
## 前期准备 1.搭建Hadoop环境需要Java的开发环境,所以需要先在LInux上安装java 2.将 jdk1.7.tar.gz 和hadoop 通过工具上传到Linux服务器上 3. ...
- 最大匹配字符串LCS,The Longest Common Substring
public enum BackTracking { UP, LEFT, NEITHER, UP_AND_LEFT } public abstract class LCSBaseMatch { /// ...
- POJ 3126 Prime Path(素数路径)
POJ 3126 Prime Path(素数路径) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 The minister ...
- 4、Python中的类详解(0601)
<大话数据结构>的作者程杰在博客园也有博客,网址是:http://cj723.cnblogs.com/ 面向对象编程(OOP) 1.程序 = 指令 + 数据 代码可以选择以指令为核心或以数 ...
- 【译】第41节---EF6-事务
原文:http://www.entityframeworktutorial.net/entityframework6/transaction-in-entity-framework.aspx EF默认 ...
- HDU 5782 Cycle(KMP+哈希)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5782 题意:给出两个长度相等的字符串,输出两个字符的每个前缀是否循环相同. 思路: 如果连个串循环相 ...
- 使用explain来分析SQL语句实现优化SQL语句
用法:explain sql 作用:用于分析sql语句 mysql> explain select * from quser_1 where loginemail = "quctest ...
- swt-designer安装教程
http://jingyan.baidu.com/article/3f16e003c87b082590c10343.html
- STL——map
看到map这里,都不知道它主要是干嘛的,你有没有这样的疑问. map的主要作用:提供对T类型的数据进行快速和高效的检索 .C++ STL中标准关联容器set, multiset, map, multi ...
- 将矩阵数据转换为栅格图 filled.contour()
require(grDevices) # for colours filled.contour(volcano, color = terrain.colors, asp = 1) # simple x ...