wha*_*m12 5 sql t-sql sql-server sql-server-2005
使用SQL Server 2005,我试图从一个表中选择一定数量的记录(动态),基于另一个表来获取需要的记录数.
表1有一个类别ID和我想要为该类别返回的记录数.
Category ID TOP_Limit
----------------------
Cat 1 1
Cat 2 2
Cat 3 10
Run Code Online (Sandbox Code Playgroud)
表2有产品ID,类别ID和数量:
Product ID Category ID Quantity
---------------------------------
Part 1 Cat 1 10
Part 2 Cat 1 20
Part 3 Cat 2 100
Part 4 Cat 2 100
Part 5 Cat 2 50
Part 6 Cat 3 5
Run Code Online (Sandbox Code Playgroud)
如何编写一个查询,从表2(第2部分,第3部分和第4部分,第6部分)获得正确的"顶级"产品记录?
尝试这样的事情:
;with cte as (
select ProductID, CategoryID, Quantity,
[row] = row_number() over(partition by CategoryID order by Quantity desc)
from Table2
)
select t2.Product, t2.CategoryID, t2.Quantity
from cte t2
join Table1 t1 on t2.CategoryID=t1.CategoryID
where t2.row <= t1.TOP_Limit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1621 次 |
| 最近记录: |