繁体   English   中英

如何为SQL Server中的每个分区选择最大行数

[英]How to select max rownumber for each partition in SQL Server

谁能告诉我如何使用CTE为SQL Server中的每个分区选择最大行数。

假设任何雇员有4个交易行,而另一雇员只有一个交易行,那么如何为这些雇员选择最大行。

我有工作表,我想获取员工的最大行号,以获取我尝试关注的该员工的最新交易

With CTE as (
Select 
My fields,
Rownum = row_number() over(partition by emplid order by date) from jobtable
Where 
Myconditions
)
Select *  from CTE  B left outer join 
CTE A on A.emplid  = B.emplid 
Where 
A.rownum = (select max(a2.rownum) from jobtable a2)

上面是否需要左连接,还是根本不需要左连接? 请告诉我如果任何员工仅存在1行,则如何获取rownum,因为上述查询仅获取整个表中具有最伟大rownum的员工

With CTE as (
    Select
       My fields,
       Rownum = row_number() over(partition by emplid order by date DESC)
    from jobtable
    Where 
       Myconditions
)

SELECT *
FROM
    cte
WHERE
    RowNum = 1

只需反转ROW_NUMBER的顺序并选择等于1的位置即可。行号可以升序(ASC)或降序(DESC)。 因此,如果您希望最近的日期获得最新的记录ORDER BY date DESC ,如果您想最早的记录最早,则可以选择ORDER BY date ASC (or date)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM