Sql 如何将一个表中的值与另一个表中的范围相关联?

Sql 如何将一个表中的值与另一个表中的范围相关联?,sql,range,sas,Sql,Range,Sas,考虑以下简单的双表设置: 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 rang

考虑以下简单的双表设置:

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 最好使用通用SQL(我正在SAS中使用
PROC-SQL


我还提供了一个+1,用于提供合理且可用的DDL和INSERT语句。很高兴能帮助你。

谢谢你帮我开窍。我不知道为什么,但我经历了一系列的扭曲,忘记了外部连接。 v|x|y|label 0|NULL|NULL|NULL 3|1|5|range1 8|8|10|range2 12|NULL|NULL|NULL 23|20|30|range3
select * 
from entries as a
left outer join ranges as b 
  on (a.v between b.x and b.y);