`

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;

 

分享到:
评论

相关推荐

    Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码

    在《Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码》中,读者将深入学习这些概念,并通过实际的脚本示例了解如何在SQL Server 2005中应用它们。书中的源代码文件“TSQL_Querying_20061113”很可能包含了一...

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

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

    Microsoft_SQL_Server_2005技术内幕:T-SQL查询.pdf

     本书适合于需要编写或检查T-SQL代码的有经验的T-SQL程序员和数据库专业人员。读者可从中学到大量精湛的技巧,这些技巧会充实您的工具箱和编码技能,并让您顺利地开发出高效的解决方案。 作者简介 Itzik Ben-Gan是...

    Sql2008技术内幕-T-Sql查询

    这本书不仅包含了完整的T-SQL查询知识,还提供了源代码和附录,为学习者提供了丰富的实践材料。 在SQL Server 2008中,T-SQL得到了进一步的增强和优化,使得数据处理能力更为强大。书中的内容可能涵盖了以下几个...

    T-SQL Querying 源代码

    本书是Inside Microsoft SQL... 本书适合于需要编写或检查T-SQL代码的有经验的T-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”暗示了它的目标是为...

    SQL SERVER 2008 技术内幕 T-SQL查询 英文版

    本书《SQL Server 2008 技术内幕:T-SQL查询》由Lubor Kollar、Dejan Sarka和Steve Kass共同编写,并由Kalen Delaney担任系列编辑,Itzik Ben-Gan作为作者之一,主要介绍了SQL Server 2008中的T-SQL查询技术。...

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

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

    学习笔记——sql.zip

    "学习笔记——sql.zip"这个压缩包文件很可能包含了关于SQL的学习资料,如教程、笔记、示例代码等,旨在帮助用户掌握SQL的基本概念、语法和高级特性。 首先,SQL的基础知识包括数据类型,如整型(INT)、浮点型...

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

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

    sqlserver-T-sql示例

    T-sql基本语法示例 1.建库建表,建约束 2.查询 3.视图 4.存储过程 5.触发器

    T-SQL入门资料

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

    SQL Server 2005 技术内幕之T-SQL编程原版CHM

    该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的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对象的数据。 首先,文章...

    编程学习笔记——初级

    编程学习笔记——初级 这篇笔记主要涵盖了初学者在北大青鸟学习编程时涉及的基础知识,包括DOS命令、Java和C#的基础、SQL Server的基本概念以及HTML基础等内容。以下是各个主题的详细说明: 1. DOS命令: DOS是...

    sql server 2005技术内幕 T-SQL程序设计源码

    源码示例涵盖了各种实际场景,如数据处理、性能优化、错误处理和并发控制等,是学习和进阶T-SQL编程不可或缺的资源。 总之,《SQL Server 2005技术内幕:T-SQL程序设计》是一本深入且全面的指南,无论你是初学者...

    Transact-SQL权威指南

    通过深入学习,读者将能够编写更复杂、更高效、更安全的SQL代码,从而在数据库管理和开发中发挥更大的作用。 总的来说,《Transact-SQL权威指南》是一本全面的教程,适合数据库管理员、开发人员和数据分析人员阅读...

    Mybatis 学习笔记——原生DAO实现数据增删改查SQL

    Mybatis 学习笔记——原生DAO实现数据增删改查SQL:https://blog.csdn.net/qq_24598601/article/details/83037252

Global site tag (gtag.js) - Google Analytics