Рассмотрим следующую простую настройку двух таблиц:
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).