0

データベースから企業への最初の5つのリクエストのみをリストする必要があります。RequestとCompanyという名前の2つのテーブルがあります。特定の会社に対して任意の数の要求が存在する可能性があります。ただし、データベース内のすべての企業の最初の5つのリクエストのみをクエリして一覧表示する必要があります。

select top 5 *
from Request as r 
    INNER JOIN Company c
    ON r.Company_id=c.Company_ID

上記のクエリを実行しましたが、すべてのメンバーの最初の5つではなく、テーブルから最初の5つだけが返されます。クエリを修正するにはどうすればよいですか?

4

4 に答える 4

2
    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-17T14:29:17.003 に答える
1

Companyテーブルに存在する各会社の上位5つのリクエストを探していると思います。その場合、rank()副選択で会社ごとにリクエストしてから、ランクがどこにあるかを選択できます<= 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-17T14:32:19.597 に答える
0

'firstness'を決定するフィールドでORDERBYする必要があります。おそらく次のようなものです:

r.RequestDateによる注文

于 2012-05-17T14:30:56.697 に答える
0
;WITH companyrecords 
     AS (SELECT Company.*, 
                Row_number() OVER (partition BY r.Company_id ORDER BY 
                r.Company_id 
                ASC) 
                   AS 
                RowNumber 
         FROM   Request AS r 
                INNER JOIN Company c 
                  ON r.Company_id = c.Company_ID) 
SELECT * 
FROM   companyrecords 
WHERE  RowNumber <= 5 
于 2012-05-17T14:31:24.913 に答える