Sql 查找多个范围之间的所有整数

Sql 查找多个范围之间的所有整数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在使用发现工具处理文档父/子族 有没有一种简单的方法可以返回多个范围列表之间的所有数字 我有一个有359行的表,其中包含StartingBatesNumber、BegAtt和EndAtt BegAtt是Bates范围的开始,EndAtt是Bates范围中的最后一个文档。以下是一些来自《诱惑》杂志的样本数据: 此临时表是名为ExportedItems的较大表的子集,该表包含相同的列。我需要从Detritable上的项目中选择BegAtt和EndAtt之间的每个StartingBatesNumb

我正在使用发现工具处理文档父/子族

有没有一种简单的方法可以返回多个范围列表之间的所有数字

我有一个有359行的表,其中包含StartingBatesNumber、BegAtt和EndAtt

BegAtt是Bates范围的开始,EndAtt是Bates范围中的最后一个文档。以下是一些来自《诱惑》杂志的样本数据:

此临时表是名为ExportedItems的较大表的子集,该表包含相同的列。我需要从Detritable上的项目中选择BegAtt和EndAtt之间的每个StartingBatesNumber。到目前为止,我得到的是:

SELECT EI.StartingBatesNumber
FROM ExportedItems AS EI WITH (NOLOCK)
WHERE EI.StartingBatesNumber BETWEEN #tempTable.BegAtt AND #tempTable.EndAtt
ORDER BY EI.StartingBatesNumber
我知道我不能像那样加入我的诱惑,但是如果我在StartingBatesNumber上添加了一个正式的加入,那么我的结果将仅限于子集上的项目,并且不允许我加入我列表中没有的StartingBatesNumber。我想找到一种递归方法来选择我的表上所有范围之间的所有StartingBateSnumber

我知道我可以用光标在循环中递增来解决这个问题,但我想知道是否有更简单的方法。也许是递归CTE

我明白我不能那样加入我的诱惑者

我不知道你的意思。这是一条非常有效的SQL语句:

SELECT EI.StartingBatesNumber
FROM ExportedItems EI WITH (NOLOCK) JOIN
     #tempTable tt
     ON EI.StartingBatesNumber BETWEEN tt.BegAtt AND tt.EndAtt
ORDER BY EI.StartingBatesNumber;

您的陈述不正确,因为您引用的表未在FROM子句中定义。

Wow,这样做很完美!我想我只是陷入了一种心态,一个连接需要等于一个PK或FK,并没有意识到我可以在一个范围内加入。非常感谢!我为这件事挠头已有一段时间了。我想我已经很接近了,哈哈。
SELECT EI.StartingBatesNumber
FROM ExportedItems EI WITH (NOLOCK) JOIN
     #tempTable tt
     ON EI.StartingBatesNumber BETWEEN tt.BegAtt AND tt.EndAtt
ORDER BY EI.StartingBatesNumber;