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_异教徒抱歉没有说清楚,不,我不算重叠