Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Problème d'utilisation de ROW_NUMBER() OVER (PARTITION BY ...)

Je ferais quelque chose comme ça :

;WITH x 
 AS (SELECT *, 
            Row_number() 
              OVER( 
                partition BY employeeid 
                ORDER BY datestart) rn 
     FROM   employeehistory) 
SELECT * 
FROM   x x1 
   LEFT OUTER JOIN x x2 
                ON x1.rn = x2.rn + 1 

Ou peut-être que ce serait x2.rn - 1. Vous devrez voir. En tout cas, vous voyez l'idée. Une fois que vous avez joint le tableau sur lui-même, vous pouvez filtrer, regrouper, trier, etc. pour obtenir ce dont vous avez besoin.