34,593
社区成员
发帖
与我相关
我的任务
分享
select * from table_A A
outer apply
(select top 1 * from table_B where A.fty=fty and A.code=code and YEAR(A.[date])>=YEAR([date]) and MONTH(A.[date])>=MONTH([date]) order by MONTH([date]) desc) as B
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER(
PARTITION BY a.fty,
a.date,
a.code,
a.price ORDER BY MONTH(b.date) DESC
) AS rn
FROM a
LEFT JOIN b
ON a.fty = b.fty
AND a.code = b.code
AND YEAR(a.date) = YEAR(b.date)
AND MONTH(a.date) >= MONTH(b.date)
) AS a
WHERE a.rn = 1
大致就是这样啦