我有一个 SQL 表,其中包含描述一系列 ID 的两列;这些范围需要与第二个表中特定 ID 列下的单元格进行比较 - 如果它在范围内,包括在内,第二个表的行将包含在返回中。
编辑:可用范围受用户提供的日期范围的限制。
我只熟悉SQL的基础知识;在我开始研究循环和预定义的表格函数之前,有人有什么建议吗?
SELECT * FROM [ADataBase].[dbo].[AFirstTable]
WHERE [ALongIDNumber] <=
(SELECT [StartOfIDRange] FROM [DHL].[dbo].[ASecondTable]
WHERE [date] BETWEEN '2010-01-21' AND '2010-01-22')
AND [ALongIDNumber] >=
(SELECT [EndOfIDRange] FROM [DHL].[dbo].[ASecondTable]
WHERE [date] BETWEEN '2010-01-21' AND '2010-01-22')
目前,这会返回错误
Msg 512, Level 16, State 1, Line 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
,我猜这是因为选择返回了几行而导致它起毛。
我研究过,遇到了一个类似的问题,唯一的答案是固定数量的范围。因为我在表格中查询范围,所以范围的数量会改变。
由于这种情况的性质,修改数据库是最后的手段。
谢谢你的帮助!