Sql server 数值范围介于数值范围之间
我有一个问题,我不知道我是否可以解决一个选择 我有一个范围列表,我需要与另一个范围列表匹配,第一个范围的任何数字 让我试着解释一下:Sql server 数值范围介于数值范围之间,sql-server,tsql,range,Sql Server,Tsql,Range,我有一个问题,我不知道我是否可以解决一个选择 我有一个范围列表,我需要与另一个范围列表匹配,第一个范围的任何数字 让我试着解释一下: Table 1: Table 2 | From | To | | From | To | |--------|--------| |--------|---------| | 0 | 2000 | | 0 | 15000 | | 2001 | 10
Table 1: Table 2
| From | To | | From | To |
|--------|--------| |--------|---------|
| 0 | 2000 | | 0 | 15000 |
| 2001 | 10000 | | 15000 | 25000 |
| 10001 | 50000 | | 25000 | 50000 |
| 50001 | 200000 | | 50000 | 200000 |
| 200001 | 500000 | | 200000 | 400000 |
| 500001 | 0 | | 400000 | 700000 |
| 700000 | 1500000 |
[表1]第一行0-2000很简单,与[表2]第一行0-15000匹配
但我需要第三行和任何其他类似情况,如[Table 1]10001-50000的第5行,与[Table 2]的前三行匹配,因为:
10001-50000范围内的数字在0到15000之间,但也在15000到25000和25000到50000之间
所需结果应如下所示:
Table result:
| From (Table 1) | To (Table 1) | From (Table 2) | To (Table 2) |
|----------------|--------------|----------------|--------------|
| 0 | 2000 | 0 | 15000 |
| 2001 | 10000 | 0 | 15000 |
| 10001 | 50000 | 0 | 15000 |
| 10001 | 50000 | 15000 | 25000 |
| 10001 | 50000 | 25000 | 50000 |
| etc...
我的目的是在SQL中实现这一切,而不使用SQL函数。看看您是否喜欢这样做
SELECT T1.*, T2.*
FROM Table1 T1
JOIN Table2 T2
ON T1.From < T2.To
AND T1.To > T2.From
编辑:使用>=如果边框范围计数为重叠,查看匹配重叠是否与此相同
SELECT T1.*, T2.*
FROM Table1 T1
JOIN Table2 T2
ON T1.From < T2.To
AND T1.To > T2.From
编辑:如果边框范围计数为重叠,则使用>=以便根据重叠范围在两个表之间执行联接?需要明确的是,范围端点的规则是什么?也就是说,如果表1的范围为0..15000,那么这是否与表2中的范围15000..25000重叠?@Damien_异教徒抱歉没有说清楚,不,我不是用重叠计算的,所以你想根据重叠的范围在两个表之间执行联接?需要明确的是,范围端点的规则是什么?也就是说,如果表1的范围是0..15000,那么这是否与表2中的范围15000..25000重叠?@Damien_异教徒抱歉没有说清楚,不,我不算重叠