SQL 2012 声明到 return 范围内的查找值

SQL 2012 statement to return Lookup Values in Ranges

所以我有 2 个表,

Table A has 3 columns: 
    NumberRangeStart, NumberRangeEnd, RangeName
Table B has 2 columns: 
    Number, RangeName

我想要输出到

TableC:
    B.Number, B.RangeName, A.NumberRange, A.RangeName

我想查找 B.Number 位于 A.NumberRangeStart and A.NumberRangeEnd 之间的位置,并报告分配的 RangeName

任何想法如何在 SQL 2012 年实现这一目标? 我想我需要一个 CTE,但不确定如何去做!

也许:

SELECT DISTINCT B.RangeName
FROM TableB B
WHERE EXISTS
(
    SELECT 1 FROM TableA A
    WHERE A.RangeName = B.RangeName
    AND   B.Number BETWEEN A.NumberRangeStart AND A.NumberRangeEnd
)

这看起来像是在插入语句中使用的简单的两个条件内连接。

INSERT INTO TableC
SELECT
    TableB.Number,
    TableB.RangeName,
    TableA.NumberRangeStart,
    TableA.NumberRangeEnd,
    TableA.RangeName
FROM TableA
INNER JOIN TableB ON TableB.Number BETWEEN TableA.NumberRangeStart AND TableA.NumberRangeEnd
-- Optional based on clarification
WHERE TableA.RangeName <> TableB.RangeName;
create table #TableA (
    NumberRangeStart int,
    NumberRangeEnd int,
    RangeName nvarchar(200))

create table #TableB (
    Number int)

insert into #TableA values (0, 100, '0 to 100'), (50, 70, '50 to 70'), (150, 1000, '150 to 1000')

insert into #TableB values (10), (20), (40), (60), (200), (2000)

select  b.Number, coalesce(a.Rangename, 'Not in any range')
from    #TableB b left join #TableA a on b.Number between a.NumberRangeStart and a.NumberRangeEnd