斷號查詢(查找不連續ID記錄)
来源:互联网 发布:java post与get 方式 编辑:程序博客网 时间:2024/06/17 13:15
需求:找出某列斷流的ID號.
例如:1,2,7,8,9. 斷流的ID是 3 至 6.
直接上代碼算了:
不分組,單列:
IF object_ID('tempdb..#Tab') IS NOT NULLDROP TABLE #TabCREATE TABLE #Tab(ID INT)GOINSERT #Tab(ID)SELECT 1 UNION ALLSELECT 2 UNION ALLSELECT 3 UNION ALLSELECT 6 UNION ALLSELECT 7 UNION ALLSELECT 10 UNION ALLSELECT 12 UNION ALLSELECT 15 UNION ALLSELECT 20 UNION ALLSELECT 21GO-- 某一區間連續ID的最大值 + 1;WITH CTE_A AS(SELECT DISTINCT RN = DENSE_RANK() OVER (ORDER BY a.ID) ,ID = a.ID + 1FROM #Tab aWHERE NOT EXISTS(SELECT * FROM #Tab WHERE ID = a.ID + 1))-- 某一區間連續ID的最小值 - 1,CTE_B AS(SELECT DISTINCT RN = DENSE_RANK() OVER (ORDER BY a.ID) ,ID = a.ID - 1FROM #Tab aWHERE NOT EXISTS(SELECT * FROM #Tab WHERE ID = a.ID - 1))SELECT CASE WHEN A.ID = B.ID THEN LTRIM(a.ID) ELSE LTRIM(a.ID) + ' - ' + LTRIM(b.ID) END IDFROM CTE_A aINNER JOIN CTE_B bON a.RN = b.RN - 1/*結果:ID---------------------------4 - 58 - 91113 - 1416 - 19*/先分組:
IF object_ID('tempdb..#Tab') IS NOT NULLDROP TABLE #TabCREATE TABLE #Tab(Sort NVARCHAR(200),ID INT)GOINSERT #Tab(Sort,ID)SELECT N'a', 1 UNION ALLSELECT N'a', 2 UNION ALLSELECT N'a', 3 UNION ALLSELECT N'a', 6 UNION ALLSELECT N'b', 1 UNION ALLSELECT N'b', 2 UNION ALLSELECT N'b', 6 UNION ALLSELECT N'b', 7 UNION ALLSELECT N'b', 12 UNION ALLSELECT N'b', 14GO-- 某一區間連續ID的最大值 + 1;WITH CTE_A AS(SELECT DISTINCT RN = DENSE_RANK() OVER (ORDER BY Sort,a.ID),Sort,ID = a.ID + 1FROM #Tab aWHERE NOT EXISTS(SELECT * FROM #Tab WHERE SOrt = a.Sort AND ID = a.ID + 1))-- 某一區間連續ID的最小值 - 1,CTE_B AS(SELECT DISTINCT RN = DENSE_RANK() OVER (ORDER BY Sort,a.ID),Sort,ID = a.ID - 1FROM #Tab aWHERE NOT EXISTS(SELECT * FROM #Tab WHERE SOrt = a.Sort AND ID = a.ID - 1))SELECT a.Sort,CASEWHEN A.ID = B.ID THEN LTRIM(a.ID) ELSE LTRIM(a.ID) + ' - ' + LTRIM(b.ID) END IDFROM CTE_A aINNER JOIN CTE_B bON a.Sort = b.Sort AND a.RN = b.RN - 1/*結果:Sort ID------------------------- ---------------------------a 4 - 5b 3 - 5b 8 - 11b 13*/
0 0
- 斷號查詢(查找不連續ID記錄)
- ID收费查找(街或方向)
- hibernate根据id查找
- 过半数ID查找
- grep查找进程ID
- Android 自动化测试(2)根据ID查找对象(java)
- ID 字符串 查找名称字符串
- jquery 按照ID查找元素
- 查找原始MySQL死锁ID
- Linux 查找重复ID数据
- 查找原始MySQL死锁ID
- mysql 查找不存在的id
- android 自动查找控件id
- PHPCMS 父级ID 查找子类
- Sql根据子类ID查找父类ID
- 关于vendor-id和product-id的查找
- SQL2008+ 根据子类ID来查找最大级父类ID
- 串口-关于vendor-id和product-id的查找
- nice!
- IIS MIME设置
- 大众合遥控器 - 众合电子实业有限公司
- 惊爆眼球,锚文本与网站优化不为人知的秘密!
- 新安装oracle11g忘记用户名和密码怎么办?
- 斷號查詢(查找不連續ID記錄)
- leetcode:Reorder List
- linux下mysql定时备份数据库
- hdu 2952Counting Sheep
- 安装Debian新内核
- Android消息循环分析
- scrollBy、getScrollX、getScrollY这4个方法的含义
- UVA Team Queue
- clang 大法好