我正在使用发现工具处理文档父/子系列 .
是否有一种简单的方法可以在多个范围列表之间返回所有数字?
我有一个包含 StartingBatesNumber
, BegAtt
和 EndAtt
的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
上的项目中选择 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
我理解我不能加入我的#tempTable,但是如果我在 StartingBatesNumber
上添加了正式的连接,那么我的结果将仅限于子集上的项目,并且不允许我拉入已经不在我列表中的StartingBatesNumbers . 我想找到一种递归方式来选择#tempTable上所有范围之间的所有StartingBatesNumbers .
我知道我可以使用光标在循环中递增来解决这个问题,但我想知道是否有更简单的方法 . 也许是一个递归的CTE?
1 回答
我不确定你是什么意思 . 这完全有效,因为它是一个SQL语句:
您的陈述不正确,因为您引用的是未在
FROM
子句中定义的表 .