我只需要从我的数据库中列出公司的前五个请求。我有两个表名为Request和Company。对于给定的公司,可能会有任何数量的请求。但是,我只需要查询和列出我的数据库中所有公司的前5个请求。
select top 5 *
from Request as r
INNER JOIN Company c
ON r.Company_id=c.Company_ID我已经完成了上面的查询,但它只返回表中的前五个成员,而不是所有成员中的前五个成员。如何更正我的查询?
发布于 2012-05-17 22:32:20
我认为您正在查找存在于company表中的每个公司的前5个请求。在这种情况下,您可以在子选择中按公司选择每个请求,然后选择排名为<= 5的位置
select company_id, request_id
from
( select c.company_id, r.request_id, rank() over (partition by c.company_id order by request_id) as Rank
from request r
inner join company c on
r.company_id = c.company_id
) ranked
where rank <= 5发布于 2012-05-17 22:29:17
With r
as
(select *, row_number() over(partition by Company_id order by RequestDate) as rown
from Request as)
Select *
from r join Company c on c.Company_id=r.Company_id
Where rown<=5发布于 2012-05-17 22:30:57
您需要按决定“firstness”的字段排序。可能是这样的:
按r.RequestDate排序
https://stackoverflow.com/questions/10637580
复制相似问题