T-SQL: поиск строк в другой таблице без объединений - PullRequest
1 голос
/ 07 февраля 2012

У меня есть две таблицы, я буду называть TableA и TableB

TableA:

StartNumber EndNumber Country

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

TableB:

SomeNumber
5
15
55
22
35
46
49

Для каждого числа в Таблице B я хочу найти соответствующую строку в Таблице A, где число находится между StartNumber и EndNumber, и вернуть название страны. Затем я хочу сгруппировать эти результаты по столбцу страны и вернуть количество раз, когда каждая страна появляется. Таким образом, результаты будут выглядеть так:

Country Occurrences
USA     2
Germany 1
Canada  1
France  3

Не уверен, как это сделать.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Вот запрос.

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
0 голосов
/ 07 февраля 2012

Это должно помочь (но использует соединение):

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...