Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Probleme bei der Verwendung von ROW_NUMBER() OVER (PARTITION BY ...)

Ich würde so etwas tun:

;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 

Oder vielleicht wäre es x2.rn - 1. Sie müssen sehen. Auf jeden Fall kommt man auf die Idee. Sobald Sie die Tabelle mit sich selbst verbunden haben, können Sie filtern, gruppieren, sortieren usw., um das zu bekommen, was Sie brauchen.