Как я могу связать значения в таблице с диапазонами в другой таблице? - PullRequest
2 голосов
/ 09 февраля 2011

Рассмотрим следующую простую настройку двух таблиц:

drop table ranges;
drop table entries;

create table ranges (x integer, y integer, label varchar);
create table entries (v integer);

insert into ranges values(1, 5, "range1");
insert into ranges values(8, 10, "range2");
insert into ranges values(20, 30, "range3");

insert into entries values(0);
insert into entries values(3);
insert into entries values(8);
insert into entries values(12);
insert into entries values(23);

Теперь запрос

select * from entries as a, ranges as b
where a.v between b.x and b.y;

даст мне

v|x|y|label
3|1|5|range1
8|8|10|range2
23|20|30|range3

То есть значения вentries, которые не попадают ни в один из диапазонов, не появятся в результатах.

Как мне написать запрос, который будет возвращать строку для каждой записи в entries, чтобы я получил

v|x|y|label
0|NULL|NULL|NULL
3|1|5|range1
8|8|10|range2
12|NULL|NULL|NULL
23|20|30|range3

предпочтительно в универсальном SQL (я использую PROC SQL в SAS).

1 Ответ

2 голосов
/ 09 февраля 2011
select * 
from entries as a
left outer join ranges as b 
  on (a.v between b.x and b.y);

И +1 от меня за предоставление разумных и полезных операторов DDL и INSERT. Я рад помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...