我有2个表,例如:
表1
ID,Name,Address1
表2
Visit_date,item,id
表2记录了大量访问次数,以及地址的ID。
我想编写一个查询,选择所有姓名和地址及其最后访问日期和项目。
SELECT *
FROM (SELECT ID, NAME, ADDRESS FROM table1) as temp
RIGHT JOIN table2 ON table1.ID = temp.ID;
到目前为止我已经到了。
答案 0 :(得分:1)
您可以在CTE中使用ROW_NUMBER
。
;WITH cte AS (
SELECT t1.name, t1.address1, t2.Visit_date, t2.item,
ROW_NUMBER() OVER (PARTITION BY t2.id ORDER BY t2.visit_date DESC) AS rn
FROM table2 t2
INNER JOIN table1 t1
ON t1.id = t2.id
)
SELECT name, address1, visit_date, item
FROM cte
WHERE rn = 1
答案 1 :(得分:0)
这可能是cross-apply
的情况select T1.ID, T1.Name, T1.Address1, T2.item, T2.Visit_date from
Table1 T1 cross apply (select top 1 * from Table2 where ID = Table1.ID
order by Visit_date desc) T2