以下是此表的表格和脚本。
DECLARE @temp TABLE (PPId INT, SVPId INT, Minimum INT, Maximum INT)
INSERT INTO @temp VALUES(1,1,8,20)
INSERT INTO @temp VALUES(2,1,21,100)
最低&最大值作为参数传入。我想找到属于给定范围的所有行。
E.g;
感谢。
答案 0 :(得分:3)
比较这样的范围时,更容易查找范围不重叠的情况。两个范围有许多不同的方式可以重叠,但只有两种方式不重叠:
select *
from @temp
where not (@maximum < Minimum or @minimum > Maximum)
答案 1 :(得分:2)
SELECT *
FROM @temp
WHERE minimum <= @max
AND maximum >= @min
答案 2 :(得分:0)
我建议的答案很简单,我怀疑我错过了什么或问题不完整?
SELECT *
FROM @temp
WHERE Minimum < @Minimum
AND Maximum > @Maximum
答案 3 :(得分:0)
我可以看到你正在尝试做什么。您想知道有多少最小/最大范围与提供的最小/最大范围重叠。试试这个:
SELECT * FROM @temp T
WHERE @minimum BETWEEN T.minimum AND T.maximum
OR @maximum BETWEEN T.minimum AND T.maximum
OR T.minimum BETWEEN @minimum AND @maximum
OR T.maximum BETWEEN @minimum AND @maximum
这应该返回与间隔[@minimum,@ max]相交的所有行。