Postgresql
歷史上第一次匹配的左連接表
我想要完成的是將 TableB 加入到 TableA 中,其中 TableA.date <= TableB.date,但只有與 Table.B.date 最接近的最大日期的值。目前,我得到的是所有以前的值,如下所示:
[
postgres 版本:PostgreSQL 9.2.24
腳本:
CREATE TABLE public.table_a ( id serial8 NOT NULL, value text NULL, "date" timestamp NOT NULL DEFAULT now() ); INSERT INTO public.table_a (value, "date") VALUES ('Value 1', '2020-01-29'::date), ('Value 2', '2020-02-01'::date), ('Value 3', '2020-02-12'::date); CREATE TABLE public.table_b ( id serial8 NOT NULL, value text NULL, "date" timestamp NOT NULL DEFAULT now() ); INSERT INTO public.table_b (value, "date") VALUES ('Task A', '2020-02-05'::date), ('Task B', '2020-02-15'::date);
WITH cte AS ( SELECT table_a.value value_a, table_b.value value_b, ROW_NUMBER() OVER (PARTITION BY table_b.value ORDER BY table_a."date" DESC) rn FROM table_a JOIN table_b ON table_a."date" <= table_b."date") SELECT value_b, value_a FROM cte WHERE rn = 1;
檢查這是否適用於您的伺服器版本。