Tsql T-SQL:在不同的表中查找不带联接的行

Tsql T-SQL:在不同的表中查找不带联接的行,tsql,Tsql,我有两张桌子,我叫TableA和TableB 表a: StartNumber EndNumber Country 1 10 USA 11 20 USA 21 30 Canada 31 40 France 41 50 France 51 60 Germany 表B: SomeNumber 5 15 55

我有两张桌子,我叫TableA和TableB

表a:

StartNumber EndNumber Country

1           10        USA
11          20        USA
21          30        Canada
31          40        France
41          50        France
51          60        Germany
表B:

SomeNumber
5
15
55
22
35
46
49
对于表B中的每个数字,我想在表A中找到相应的行,其中数字位于起始编号和结束编号之间,并返回国家的名称。然后,我想将这些结果分组到“国家”列中,并返回每个国家出现的次数。因此,结果如下所示:

Country Occurrences
USA     2
Germany 1
Canada  1
France  3
不确定如何执行此操作。

这里是查询

Select A.Country, count(*) as Occurrences
from 
 tableA A
    inner join
 tableB B
    on B.someNumber between a.startnumber and b.endnumber
group by A.country
这应该可以做到(但确实使用联接):


“无联接”是什么意思?我猜(我猜你也这么认为)“无联接”是对联接的误解(例如,它们总是基于等式或1-1),而不是实际要求。这不起作用。它不返回任何结果。另外,您还有一个错误,b.endnumber应该是a.endnumber。@AndroidDev-根据您所注的更正(a.endnumber),并使用示例数据生成示例结果,因此任何不起作用的内容都不是您向我们展示的内容的一部分。您最初编写了“左外连接”。我现在注意到您将其更改为“内部连接”。@Damien_The_unsiever,感谢您的评论,以实现OP的解决方案。发布代码时,请将其标记-手动缩进4个空格,或突出显示代码块并使用
{}
按钮或CTRL-K
declare @TableA table (StartNumber int, EndNumber int, Country varchar(16));
insert into @TableA (StartNumber, EndNumber, Country)
select 1, 10, 'USA' union
select 11, 20, 'USA' union
select 21, 30, 'Canada' union
select 31, 40, 'France' union
select 41, 50, 'France' union
select 51, 60, 'Germany';

declare @TableB table (SomeNumber int);
insert into @TableB (SomeNumber)
select 5 union
select 15 union
select 55 union
select 22 union
select 35 union
select 46 union
select 49;

select
    a.Country, count(*) Occurrences 
from
    @TableA a inner join
    @TableB b on b.SomeNumber between a.StartNumber and a.EndNumber
group by
    a.Country;