SELECT customer_id,customer_name,product_name AS latest_order
FROM(
SELECT a.customer_id,b.customer_name,c.product_name,a.order_date,
ROW_NUMBER() OVER (PARTITION BY a.customer_id ORDER BY a.order_date DESC) AS rk
FROM orders AS a
JOIN customers AS b ON a.customer_id = b.customer_id
JOIN products AS c ON a.product_id = c.product_id
) AS ranked_tb
WHERE rk = 1
ORDER BY customer_id ASC
此题ez,先将三表连接保留customer_id,customer_name,product_name,order_date,再用ROW_NUMBER (DESC)分组排序找出最近日期,第二层SELECT选出rk为1的就好了

京公网安备 11010502036488号