Postgresql 连接记录集,其中连接的值介于另一行的基值和更高的基值之间
我想联接一个记录集,其中联接表列中的特定值位于基表行上的值之间。给定的表b左键连接到a:Postgresql 连接记录集,其中连接的值介于另一行的基值和更高的基值之间,postgresql,Postgresql,我想联接一个记录集,其中联接表列中的特定值位于基表行上的值之间。给定的表b左键连接到a: WITH a (v) AS ( VALUES (1),(3),(5),(7),(9) ), b (v) AS ( VALUES (1),(2),(3),(4),(5) ) SELECT a.v, b.v FROM a LEFT JOIN b ON b.v >= a.v /* AND ??? */ 我希望实现的目标输出c是: a join b = c v v
WITH a (v) AS (
VALUES (1),(3),(5),(7),(9)
), b (v) AS (
VALUES (1),(2),(3),(4),(5)
) SELECT a.v, b.v FROM a
LEFT JOIN b ON b.v >= a.v /* AND ??? */
我希望实现的目标输出c是:
a join b = c
v v v
- - ---
1 1 1,1
3 2 1,2
5 3 3,3
7 4 3,4
9 5 5,5
7,
9
我怀疑子查询或窗口函数可能会起作用,但解决方案对我来说并不明显,希望有一些好的建议:无关,但是:从值1,3,5,7,9中选择column1 a可以在CTE中简化为值1,3,5,7,9
WITH
a (v) AS (SELECT column1 FROM ( VALUES (1),(3),(5),(7),(9) ) a)
, b (v) AS (SELECT column1 FROM ( VALUES (1),(2),(3),(4),(5) ) b)
, a2 AS (select a.v, lead(a.v) over () as v_l from a)
select a2.v,b.v from a2 left join b on (b.v < a2.v_l and b.v >= a2.v)