首页 文章

查找多个范围之间的所有INT

提问于
浏览
0

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

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

我有一个包含 StartingBatesNumberBegAttEndAtt 的359行 #tempTable

BegAtt 是贝茨范围的开头, EndAtt 是贝茨范围内的最后一个文档 . 这里是 #tempTable 的一些示例数据:

StartingBatesNumber BegAtt  EndAtt
CTRL00262209    CTRL00262208    CTRL00262209
CTRL00262295    CTRL00262292    CTRL00262295
CTRL00262325    CTRL00262323    CTRL00262326
CTRL00262348    CTRL00262347    CTRL00262362
CTRL00262398    CTRL00262395    CTRL00262399
CTRL00262518    CTRL00262509    CTRL00262597
CTRL00262575    CTRL00262509    CTRL00262597
CTRL00262946    CTRL00262934    CTRL00262955
CTRL00263301    CTRL00263280    CTRL00263304
CTRL00263342    CTRL00263336    CTRL00263360
CTRL00263602    CTRL00263590    CTRL00263614
CTRL00263649    CTRL00263648    CTRL00263649
CTRL00263810    CTRL00263809    CTRL00263810
CTRL00264691    CTRL00264690    CTRL00264691
CTRL00265211    CTRL00265192    CTRL00265320

此临时表是名为 ExportedItems 的较大表的子集,其中包含相同的列 . 我需要从 #tempTable 上的项目中选择 BegAttEndAtt 之间的每个 StartingBatesNumber . 到目前为止我所拥有的是:

SELECT EI.StartingBatesNumber
FROM ExportedItems AS EI WITH (NOLOCK)
WHERE EI.StartingBatesNumber BETWEEN #tempTable.BegAtt AND #tempTable.EndAtt
ORDER BY EI.StartingBatesNumber

我理解我不能加入我的#tempTable,但是如果我在 StartingBatesNumber 上添加了正式的连接,那么我的结果将仅限于子集上的项目,并且不允许我拉入已经不在我列表中的StartingBatesNumbers . 我想找到一种递归方式来选择#tempTable上所有范围之间的所有StartingBatesNumbers .

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

1 回答

  • 2

    我明白我不能加入我的#tempTable

    我不确定你是什么意思 . 这完全有效,因为它是一个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 子句中定义的表 .

相关问题