`
- 浏览:
1791749 次
- 性别:
- 来自:
北京
-
在SqlServer中如何找到列中断缺的值并补充上
--在Sql Server 2005 中如何找到列中断缺的值,并补充上.
USE tempdb;
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
FROM dbo.T1 AS A
WHERE NOT EXISTS
(SELECT * FROM dbo.T1 AS B
WHERE B.col1 = A.col1 + 1);
--去掉多余的断值下界,最后一行
SELECT col1 + 1 AS start_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 col1
FROM dbo.T1 AS A
WHERE NOT EXISTS
(SELECT * FROM dbo.T1 AS B
WHERE B.col1 = A.col1 - 1);
--去掉多余的断值上界,第一行
SELECT col1 - 1 AS start_range
FROM dbo.T1 AS A
WHERE NOT EXISTS
(SELECT * FROM dbo.T1 AS B
WHERE B.col1 = A.col1 - 1)
AND col1 > (SELECT min(col1) FROM dbo.T1);
----------------方法二--------------------------
--相邻两行的值
SELECT col1 AS cur,
(SELECT MIN(col1) FROM dbo.T1 AS B
WHERE B.col1 > A.col1) AS nxt
FROM dbo.T1 AS A;
--找出断值的两行(当前行和下一行相差值大于一)
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;
------------------------------方法三
--创建辅助表Nums,据说sql server 2008会在数据库中自带该表,
--关于辅助表的创建,有几个经典的例子,以后再写上来.
--这里只是用效率最低的方法创建一个1W行的辅助表,只够这里用.
if(object_id('Nums') is not null)
drop table Nums
create table Nums(
n int
)
declare @num int
set @num = 1
while @num<10000
begin
insert into Nums values (@num)
set @num=@num+1
end
--利用辅助表找出所有缺值
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);
--找出缺值,自然很容易就可以把缺值插入表中,举一列如下:
insert into dbo.T1
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);
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
本文将介绍如何在 SQL Server 中计算列和平均值。 首先,我们需要了解 Having 子句和 Where 子句的区别。Having 子句用于过滤聚合结果,而 Where 子句用于过滤原始数据。如果你只需要一个表,那么你可以用 Where ...
在SQL Server中,将某一列的值拼接成字符串是一个常见的需求,这通常涉及到数据的格式化输出,比如创建报告或者导出数据。这个过程可以通过几种不同的方法来实现,其中包括使用FOR XML PATH子句和CONCAT函数。我们将...
sql server 中如何增加递增的序号列 sql server 是一种功能强大且广泛应用的关系...在 sql server 中增加递增的序号列可以使用多种方法,每种方法都有其特点和优缺。选择哪种方法取决于具体的业务需求和数据特点。
昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 : 类别 名称 AAA 企业1 AAA 企业2 AAA 企业3 ...
sqlserver 实现 行转列 split 分割的函数,具体使用方法写有在文件里。
SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...
在IT领域,特别是软件开发与数据库管理中,对SQL Server的存储过程进行中断点测试是一项重要的技能,它有助于开发者深入理解代码执行流程,及时发现并修复潜在错误。下面,我们将详细探讨如何在Visual Studio(以下...
在SQL Server中,将数据从行转换为列是一项常见的需求,尤其在数据分析和报表展示时。这个过程通常称为“行列转换”或“PIVOT”操作。本篇将深入探讨如何在SQL Server中实现行转列,以满足各种场景的需求。 首先,...
Sql Server 2000和Sql Server 2005之间的关键差异在于:在Sql Server 2000中,需要新建数据库并对其还原,而在Sql Server 2005中,需要不能新建数据库才能对其还原。另外一个区别就是Sql Server 2000时是要新建的...
SqlServer如何进行行转列和列转行方法
综上所述,SQL Server连接工具是SQL Server生态系统中不可或缺的一部分,它们为数据库管理员和开发者提供了强大的支持,使得SQL Server的管理和开发工作更加高效便捷。无论是在本地环境还是云端,选择合适的工具能够...
在设备创建过程中,你需要指定数据类型,例如数值、字符串或布尔值,这些数据类型应该与SQL Server中的列类型相对应。然后,在表中选择要读取的特定列,这些列将成为OPC标签,可以在OPC客户端应用程序中访问。完成...
本文将深入探讨如何在C#中读取SQL Server的数据,并将其在DataGridView控件中进行展示,以此来实现数据的可视化呈现。此过程不仅涉及到了数据库连接、SQL查询语句的执行,还涵盖了数据集(DataSet)的使用以及...
在SQL Server的中文帮助文档中,你可以找到以下关键知识点: 1. **SQL Server架构**:了解SQL Server的核心组件,如数据库引擎、Analysis Services、Integration Services、Reporting Services等,以及它们在数据...
Sql Server 2005 打开 Sql Server 2008 mdf 文件数据库转换是指将 Sql Server 2008 中的数据库文件(mdf 文件)转换为 Sql Server 2005 可以识别的格式,以便在 Sql Server 2005 中使用。这种转换过程需要使用 Sql ...
6. **SQL Server on Linux and Docker**:SQL Server 2019继续支持在Linux操作系统和Docker容器上运行,增强了跨平台兼容性。 7. **SQL Server Management Studio (SSMS)**:SSMS是用于管理SQL Server实例的重要...
用户需要通过控制面板的数据源管理工具(如ODBC Data Source Administrator或OLE DB Provider for SQL Server)来创建和配置数据源,以便应用程序可以找到并连接到SQL Server实例。 7. **开发和调试**: 对于开发...
sqlserver字段最大值加1后补0
在VB代码中,这可能表现为创建WMI连接,查询`SQLServer`类,并将结果输出到控制台或用户界面。同时,需要确保在目标机器上SQL Server Browser服务是开启的,否则可能无法获取到所有实例信息。 在提供的压缩包文件...
在SQL SERVER 2000中进行简繁体转换是一个重要的功能,特别是在处理中文数据时。这个过程涉及到数据库设计和自定义函数的创建,以便在数据库中实现字符集的转换。下面将详细介绍如何在SQL SERVER 2000中执行简繁体...