sql从某不连续的数字中将其分段并找出缺失的数字并分段
- 首先做准备数据
CREATE TABLE #tempsource(col NVARCHAR(100)) INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
INSERT INTO #tempsource (col) VALUES('')
- 将数据转换成应该处理的数据格式
CREATE TABLE #temp(name NVARCHAR(50),colValue INT ) INSERT INTO #temp SELECT LEFT(col,6) AS name ,SUBSTRING(col,7,LEN(col)) FROM #tempsource
- 将数据进行排序分组
select v1.colValue, (v1.colValue - v1.rownum) as delta ,v1.name INTO #tempSort
from
(
select Row_Number() OVER (ORDER BY name,colValue) as rownum,colValue ,name
from #temp
) v1
- 找出连续的数字并分组
SELECT v2.name,delta,MIN(v2.colValue) as StartNum, max(v2.colValue) as EndNum,
max(v2.colValue)-min(v2.colValue)+1 as Count,ROW_NUMBER() OVER( ORDER BY v2.delta ASC ) AS rownum
INTO #tempContinuity
from #tempSort v2
--WHERE v2.colValue >=2
group by v2.name,v2.delta
ORDER BY StartNum
- 跟据连续的信息找出不连续的数字并分组
SELECT tlx1.name,tlx1.EndNum+1 LostStartNum,tlx2.StartNum-1 AS LostEndNum,tlx2.StartNum-1 -(tlx1.EndNum+1)+1 LostCount
INTO #tempLost
FROM #tempContinuity AS tlx1
LEFT JOIN #tempContinuity AS tlx2 ON tlx1.rownum+1 = tlx2.rownum AND tlx2.name = tlx1.name
WHERE tlx2.StartNum IS NOT NULL
ORDER BY tlx1.delta
- 将取得的信息进行组装成源格式进行显示
SELECT name +RIGHT(''+ CAST(StartNum AS NVARCHAR),5) AS StartNum ,name +RIGHT(''+ CAST(EndNum AS NVARCHAR),5) AS EndNum,Count FROM #tempContinuity
SELECT name +RIGHT(''+ CAST(LostStartNum AS NVARCHAR),5) AS LostStartNum ,name +RIGHT(''+ CAST(LostEndNum AS NVARCHAR),5) AS LostEndNum,LostCount FROM #tempLost
- 使用ForXml将其分组合并成一行
SELECT name,STUFF((SELECT name +RIGHT(''+ CAST(StartNum AS NVARCHAR),5) +'-'+name +RIGHT(''+ CAST(EndNum AS NVARCHAR),5)+'|'+CAST(t.Count AS NVARCHAR) +';' FROM #tempContinuity AS t WHERE t.name =v.name FOR XML PATH ('')),1,0,'') AS strCard
FROM #tempContinuity AS v
GROUP BY v.name
sql从某不连续的数字中将其分段并找出缺失的数字并分段的更多相关文章
- 一起来刷《剑指Offer》——不修改数组找出重复的数字(思路及Python实现)
数组中重复的数字 在上一篇博客中<剑指Offer>-- 题目一:找出数组中重复的数字(Python多种方法实现)中,其实能发现这类题目的关键就是一边遍历数组一边查满足条件的元素. 然后我们 ...
- 【Java】 剑指offer(2) 不修改数组找出重复的数字
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至少 ...
- 机器学习进阶-项目实战-信用卡数字识别 1.cv2.findContour(找出轮廓) 2.cv2.boudingRect(轮廓外接矩阵位置) 3.cv2.threshold(图片二值化操作) 4.cv2.MORPH_TOPHAT(礼帽运算突出线条) 5.cv2.MORPH_CLOSE(闭运算图片内部膨胀) 6. cv2.resize(改变图像大小) 7.cv2.putText(在图片上放上文本)
7. cv2.putText(img, text, loc, text_font, font_scale, color, linestick) # 参数说明:img表示输入图片,text表示需要填写的 ...
- 《剑指offer》第三_二题(不修改数组找出重复的数字)
// 面试题3(二):不修改数组找出重复的数字 // 题目:在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至 // 少有一个数字是重复的.请找出数组中任意一个重复的数字,但不能修改 ...
- 【小米oj】找出单独的数字
题目链接:https://code.mi.com/problem/list/view?id=2&cid=0&sid=26251#codearea 描述 给出N个数字.其中仅有一个数字出 ...
- 【Offer】[3-2] 【不修改数组找出重复的数字】
题目描述 思路分析 Java代码 代码链接 题目描述 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的. 请找出数组中任意一个重复的数字,但不能修改输入的数组. ...
- 【剑指 Offer】03.1.不修改数组找出重复的数字
找出数组中重复的数字. 在一个长度为 n + 1 的数组 nums 里的所有数字都在 1-n 的范围内.所以数组中至少有一个是重复的.请找出数组中任意一个重复的数字. 示例 1: 输入: [2, 3, ...
- 算法-找出与目标数字相同的digit组成的整数中比该数字大的数集中的最小数字
题目: 给出1个正整数,找到用与这个数字相同的digit组成的整数中比这个数字大的数集中的最小数字.比如:12352874 的结果是 12354278 分析: 这道题目的考虑目标是数组的查找与排序. ...
- C#中的字符串处理——找出最长数字子串
百度测试部2015年10月份的面试题之——字符串处理,找出最长的子串. 代码如下: private static string SelectNumberFromString(string input) ...
随机推荐
- 禁掉a链接的几种方法
这次遇到链接 先留着 但不能有任何作用的需求 ,我只能说顾客的需求真是多种多样,奇奇怪怪啊 啊啊啊啊啊啊啊啊啊啊啊 我用span代替了a 标签,但是后来想想维护起来可能不太方便 所以上网查资料, ...
- javascript this关键字
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Intersection of Two Linked Lists(java)
eg: a1 → a2 ↘ c1 → c2 → c3 或者直接a1 → b1 ↗ b1 → b2 → b3求公共链表c1. 常规的指针分裂法,复制法,偏移法. public class Solutio ...
- IOS总结 静变量static、全局变量extern、局部变量、实例变量
1.静态变量 static 什么是静态变量:从面向对象的角度触发,当需要一个数据对象为整类而非某个对象服务,同时有力求不破坏类的封装性,既要求此成员隐藏在类的内部,有要求对外不可见的时候,就可以使用s ...
- Java内存模型(转载)
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一.一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题 ...
- ComboGrid 行内点击编辑内容
最近easyui需要在行内编辑选中项,但是编辑的内容出了当前选中列值,还有其他的,比较麻烦, 先看下这段代码 columns: [[ { field: 'GuestID', title: '编号', ...
- 熟悉Git使用
熟悉Git使用安装git后请修改提交用的用户名和邮箱命令:git config --global user.name "Your Name" git config --global ...
- 【ecos学习1】wmware运行redboot[方法一]--脚本实现配置
背景: 远程服务器Ubuntu生成软盘镜像,通过Mac下wmware运行. 1- 环境及版本: uname -a 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 ...
- Python爬虫实战(3):安居客房产经纪人信息采集
1, 引言 Python开源网络爬虫项目启动之初,我们就把网络爬虫分成两类:即时爬虫和收割式网络爬虫.为了使用各种应用场景,该项目的整个网络爬虫产品线包含了四类产品,如下图所示: 本实战是上图中的“独 ...
- 禁止Chrome浏览器缓存的方法
web开发的人经常chrome和firefox作为开发调试工具,有些时候需要禁止chrome浏览器缓存,最近也用到禁止缓存,以下介绍几种禁止chrome浏览器缓存的方法作为记录. HTML: < ...