基本上,根据 ID 对数据进行分区,并对日期的密切程度进行排名,然后过滤日期以仅显示最接近的日期。此代码应该为您指明正确的方向 Customer Book Table=cbt 顾客评分表=cst
SELECT
cbt.ID,
cbt.Open_Date_Book,
cst.Score,
cst.Open_Date_Score
FROM
CustomerBookTable cbt
LEFT JOIN (
SELECT
ID,
Open_Date_Score,
Score,
ROW_NUMBER() OVER(PARTITION BY ID ORDER BY
ABS(TIMESTAMP_DIFF(Open_Date_Score,
Open_Date_Book, SECOND))) AS rn
FROM
CustomerScoreTable
JOIN
CustomerBookTable
ON
CustomerScoreTable.ID = CustomerBookTable.ID
WHERE
Open_Date_Score <= Open_Date_Book
) cst ON cbt.ID = cst.ID
WHERE
cst.rn = 1