简体   繁体   中英

How to select max rownumber for each partition in SQL Server

Can anybody tell me how to select the max row number for each partition in SQL Server using CTE.

Suppose any employee is having 4 transaction rows and another is having only one row then how to select max rows for those employees.

I am having job table I want to fetch max row number for employee to fetch the latest transaction for that employee I'd tried following

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)

Do left join is required above or it is not at all needed ? Please tell me how to fetch rownum if only 1 row exist for any employees as above query is fetching only employees which are having.greatest rownum in whole table

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

Just reverse the order of your ROW_NUMBER and and select where it equals 1. Row numbers can be ascending (ASC) or descending (DESC). So if you want the most recent date to get the latest record ORDER BY date DESC , if you want the earliest record first you would choose ORDER BY date ASC (or date)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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