我有以下表格
小时,PATHID,持续时间,事件,CELLID,信道
这里每个cellid有四个pathId(即0,1,2,3),每个pathId有很多事件,频道和持续时间。
现在我想为每个cellid显示前10条记录(每条pathId)。
(我们通过cellid,pathid和channel分组持续时间..我们根据持续时间将每个pathid排在前十位)
我有50+ cellid,每个cellid有4个pathid(即0,1,2,3)
请帮帮我
答案 0 :(得分:3)
我想显示每个cellid的前10条记录(pathId)。
您可以使用ROW_NUMBER()
功能执行此操作,例如:
WITH Ranked
AS
(
SELECT
Hour,PathId,Duration,Event,CellId,Channel,
ROW_NUMBER() OVER(PARTITION BY cellid ORDER BY pathId) AS RN
FROM tablename
)
SELECT Hour,PathId,Duration,Event,CellId,Channel
FROM Ranked
WHERE RN <= 10
函数ROW_NUMBER() OVER(PARTITION BY cellid ORDER BY pathId)
将生成排名编号,为每组pathId
排序cellid
,然后获得前10名。(请注意,这将按{{1}排序提升)。