`

T-SQL查询学习笔记——已有范围和缺失范围示例代码

阅读更多

 

USE SqlTest;
GO
IF OBJECT_ID('dbo.T1') IS NOT NULL
  DROP TABLE dbo.T1
GO
CREATE TABLE dbo.T1(col1 INT NOT NULL PRIMARY KEY);
INSERT INTO dbo.T1(col1) VALUES(1);
INSERT INTO dbo.T1(col1) VALUES(2);
INSERT INTO dbo.T1(col1) VALUES(3);
INSERT INTO dbo.T1(col1) VALUES(100);
INSERT INTO dbo.T1(col1) VALUES(101);
INSERT INTO dbo.T1(col1) VALUES(103);
INSERT INTO dbo.T1(col1) VALUES(104);
INSERT INTO dbo.T1(col1) VALUES(105);
INSERT INTO dbo.T1(col1) VALUES(106);

---------------------------------------------------------------------
-- 返回缺失范围
---------------------------------------------------------------------

-- 方法一
SELECT col1 + 1 AS start_range,
  (SELECT MIN(col1) FROM dbo.T1 AS B
   WHERE B.col1 > A.col1) - 1 AS end_range
FROM dbo.T1 AS A
WHERE NOT EXISTS
  (SELECT * FROM dbo.T1 AS B
   WHERE B.col1 = A.col1 + 1)
  AND col1 < (SELECT MAX(col1) FROM dbo.T1);

--方法二
SELECT cur + 1 AS start_range, nxt - 1 AS end_range
FROM (SELECT col1 AS cur,
        (SELECT MIN(col1) FROM dbo.T1 AS B
        WHERE B.col1 > A.col1) AS nxt
      FROM dbo.T1 AS A) AS D
WHERE nxt - cur > 1;
GO


---------------------------------------------------------------------
--返回缺失值
---------------------------------------------------------------------

SELECT n FROM dbo.Nums
WHERE n BETWEEN (SELECT MIN(col1) FROM dbo.T1)
            AND (SELECT MAX(col1) FROM dbo.T1)
  AND NOT EXISTS(SELECT * FROM dbo.T1 WHERE col1 = n);


---------------------------------------------------------------------
--返回已有范围
---------------------------------------------------------------------

--方法一
SELECT MIN(col1) AS start_range, MAX(col1) AS end_range
FROM (SELECT col1,
        (SELECT MIN(col1) FROM dbo.T1 AS B
        WHERE B.col1 >= A.col1
          AND NOT EXISTS
            (SELECT * FROM dbo.T1 AS C
              WHERE B.col1 = C.col1 - 1)) AS grp
      FROM dbo.T1 AS A) AS D
GROUP BY grp;

--方法二
SELECT MIN(col1) AS start_range, MAX(col1) AS end_range
FROM (SELECT col1, col1 - ROW_NUMBER() OVER(ORDER BY col1) AS grp
      FROM dbo.T1) AS D
GROUP BY grp;

 

分享到:
评论

相关推荐

    SQLServer2005技术内幕T-SQL查询的代码示例

    SQLServer2005技术内幕T-SQL查询的代码示例

    sql server 2012 T-SQl基础教程 源码和示例数据库

    而其他章节命名的.sql文件则对应各个章节的示例代码和练习,如Chapter 08 - Data Modification.sql,用于演示如何进行数据修改操作。 通过这些资源,你可以逐步掌握T-SQL的基本概念,并通过实践深化理解。无论你是...

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》示例代码

    通过《Microsoft SQL Server 2005技术内幕:T-SQL查询》中的示例代码,读者可以深入理解T-SQL的各个层面,从而更好地在实际项目中应用这些技术,解决复杂的数据问题。同时,书中还可能包含一些高级主题,如XML处理、...

    T-SQL性能调优秘笈 基于SQL Server 2012窗口函数 源码和示例数据库

    文件列表 Chapter 01 - SQL Windowing.sql Chapter 02 - A Detailed Look at Window Functions.sql Chapter 03 - Ordered Set Functions.sql ...Chapter 05 - T-SQL Solutions using Window Functions.sql TSQL2012.sql

    T-SQL性能调优秘笈 基于SQL Server2012窗口函数.rar

    1、处理常见业务问题,如总计、间隔、...3、T-SQL性能调优秘笈:基于SQL Server 2012窗口函数》基于SQLServer2012,讨论了SQL窗口、窗口函数、排序集合函数、窗口函数的优化以及利用窗口函数的T-SQL解决方案等内容。

    t-sql学习笔记

    t-sql学习笔记,总结的挺好

    T-SQL示例大全(全是T-SQL语句 )

    以上只是T-SQL部分核心概念和常用语句的概述,实际的“T-SQL示例大全”中会有更详细、具体的实例,包括但不限于这些内容。通过学习和实践这些示例,你可以深入了解T-SQL的强大功能,并提升数据库管理技能。

    T-SQL性能调优秘笈 基于SQL Server 2012窗口函数_PDF电子书

    - **T-SQL简介**:T-SQL是Transact-SQL的简称,它是微软SQL Server数据库管理系统所使用的SQL方言,是一种用于管理SQL Server数据库的标准语言。 - **SQL Server 2012版本特点**:SQL Server 2012是Microsoft公司...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...

    Notepad++ sql格式化插件 Poor Man's T-SQL Formatter 1.5.1

    "Poor Man's T-SQL Formatter 1.5.1"就是一个专门为Notepad++设计的SQL格式化插件,能够帮助用户快速而准确地格式化Transact-SQL(T-SQL)代码。 这个插件的名称“Poor Man's T-SQL Formatter”暗示了它的目标是为...

    Microsoft SQL SERVER 2008技术内幕 T-SQL查询 2/2

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...

    T-SQL编程入门(SQL Server)

    T-SQL (Transact-SQL) 是 Microsoft SQL Server 使用的一种扩展版本的 SQL 语言,它提供了额外的功能来增强 SQL 的功能,使开发者能够更高效地管理和操作数据库。 - **DML (数据操作语言 Data Manipulation ...

    Microsoft SQL Server 2005技术内幕:T-SQL查询 pdf 中文版 2

    Microsoft SQL Server 2005技术内幕:T-SQL查询 pdf 中文版 第二部分 第一部分地址:http://download.csdn.net/source/2684220

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...

    sql server 2005 技术内幕 T-SQL查询 中文清晰pdf part4

    学习sql server 和sql 的两本经典的著作: 《sql server 2005 技术内幕 T-SQL查询》 《sql server 2005 技术内幕 T-SQL程序设计》 网上大多的资源都是英文的,好容易找到中文的了,上传上来和大家分享。 这两本书都...

    T-SQL入门资料

    在学习T-SQL时,重要的是要了解其基础知识,并通过编写和执行代码示例来逐步掌握该语言。书中每个章节都包含一些练习题,旨在帮助读者更好地理解T-SQL的使用方法。通过解决实际问题,可以加深对T-SQL编程概念的理解...

    SQL Server2005 T-SQL 概述

    ### SQL Server 2005 T-SQL 概览与逻辑查询处理深度解析 ...总之,深入理解T-SQL的逻辑查询处理机制及其新特性,不仅有助于编写更高效、更准确的查询语句,还能提升数据库应用程序的整体性能和稳定性。

    存储过程嵌入脚本——让T-SQL访问外部对象.pdf

    本文将深入探讨一种技术,该技术涉及将T-SQL(Transact-SQL,微软SQL Server的SQL扩展)存储过程与外部对象相结合,特别是如何通过T-SQL访问并操作如Microsoft Excel电子表格等非SQL Server对象的数据。 首先,文章...

    Microsoft SQL Server 2005技术内幕:T-SQL查询 pdf 中文版 1

    Microsoft SQL Server 2005技术内幕:T-SQL查询 pdf 中文版 1 第一部分 第二部分地址:http://download.csdn.net/source/2684248

Global site tag (gtag.js) - Google Analytics