sql >> Database teknologi >  >> RDS >> Sqlserver

Sammenlign nuværende række med forrige række i SQL Server

Du kan bruge følgende forespørgsel:

SELECT RaidNo, OutComeID, RN,
       CASE 
          WHEN OutComeID <> 16 THEN 0
          ELSE ROW_NUMBER() OVER (PARTITION BY OutComeID, grp ORDER BY RN) 
       END AS Result
FROM (
   SELECT RaidNo, OutComeID, RN,
          RN - ROW_NUMBER() OVER (PARTITION BY OutComeID ORDER BY RN) AS grp
   FROM mytable) AS t
ORDER BY RN

Felt grp identificerer udsnit (også kaldet øer) af på hinanden følgende poster med samme OutComeID værdi. Den ydre forespørgsel bruger grp for at opregne hver post, der hører til en '16' skive. De poster, der hører til de andre udsnit, tildeles værdien 0 .

Demo her




  1. Problem med vinduesfunktion i SQL Server 2008 R2

  2. JPA-søgning String, Long og Boolean

  3. Hvordan implementerer man batchhentning med Fluent NHibernate, når man arbejder med Oracle?

  4. MySQL:Hvordan ændres varchar(255) UNIQUE kolonne til UNIQUE Text NOT NULL?