`

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;

 

分享到:
评论

相关推荐

    T-SQL性能调优秘籍——基于SQL Server 2012窗口函数 代码附件

    T-SQL性能调优秘籍——基于SQL Server 2012窗口函数,书中提及的网站已经打不开了,在github上找到了。路径在附件中。

    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是...

    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

    Sql2008技术内幕-T-Sql查询

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

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

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

    Microsoft SQL Server 2008技术内幕 T-SQL 查询 索引优化章节 示例数据库脚本

    Microsoft SQL Server 2008技术内幕 T-SQL 查询 一书中,第四章,索引优化章节的示例数据库脚本。

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

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

    T-SQL Querying 源代码

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

    Microsoft SQL Server 2005 技术内幕:T-SQL程序设计(CHM格式)

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

    Microsoft SQL Server 2008技术内幕:T-SQL查询_源代码及附录A

    "TSQLQuerying20090710.zip"这个文件很可能包含了书中所有示例的源代码,读者可以通过这些代码直接在SQL Server环境中执行,以便更好地理解和学习T-SQL查询的实际应用。这些源代码对于动手实践和解决问题来说是非常...

    数据库习题----————————

    11. UPDATE 语句用于修改表中已有数据,而不是字段名称。 12. DELETE 只删除数据,保留表结构。 13. 通配符 `_` 在 SQL 中代表任意单个字符。 14. IN 子查询通常不能完全替代 OR 逻辑表达式,两者在某些情况下...

    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程序设计》 网上大多的资源都是英文的,好容易找到中文的了,上传上来和大家分享。 这两本书都...

    教学课件-数据库技术及应用——SQL-Server-李雁翎.ppt

    教学课件-数据库技术及应用——SQL-Server-李雁翎.ppt

    SQL Server2005 T-SQL 概述

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

Global site tag (gtag.js) - Google Analytics