Ref*_*din 0 sql sql-server-2005 greatest-n-per-group
我需要一个SQL查询,按PlanDate每个ClientID 返回前两个计划.这是一个表,其中PlanID是PrimaryID,ClientID是一个foreignID.
这是我到目前为止 - >
SELECT *
FROM [dbo].[tblPlan]
WHERE [PlanID] IN (SELECT TOP (2) PlanID FROM [dbo].[tblPlan] ORDER BY [PlanDate] DESC)
Run Code Online (Sandbox Code Playgroud)
显然,这只返回2条记录,其中我实际上需要最多2条记录ClientID.
这可以使用ROW_NUMBER完成:
SELECT PlanId, ClientId, PlanDate FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY ClientId ORDER BY PlanDate DESC) rn, *
FROM [dbo].[tblPlan]
) AS T1
WHERE rn <=2
Run Code Online (Sandbox Code Playgroud)
将所需的任何其他列添加到select中以获取这些列.
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |