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

gå til næste række, når en kolonne indeholder en bestemt værdi (sql server 2008)

Der er en relativt effektiv måde at afgøre, om dataene er korrekte - ja næsten. Det vil afgøre, om der mangler "1" eller "2" i dataene. Denne version afgør ikke, om det første id er "1", fordi dit spørgsmål ikke nævner det.

Den bedste løsning er at bruge lag() og lead() . SQL Server 2008 understøtter dog ikke disse funktioner. Så lad os se på dette som et hul-og-øer. Er der nogen situationer med mere end 1 "1" eller "2" i træk for et givet id ? Følgende kode bør finde disse uregelmæssigheder:

select id, inoutid, count(*) as num_in_row,
from (select t.*,
             row_umber() over (partition by id, inoutid order by date, hours, minute) as seqnum_ii,
             row_umber() over (partition by id order by date, hours, minute) as seqnum_i
      from t
     ) t
group by id, inoutid, (seqnum_i - seqnum_ii)
having count(*) > 1



  1. FEJL 1064 (42000):Du har en fejl i din SQL-syntaks; Ønsker at konfigurere en adgangskode som root som bruger

  2. Installation af QMYSQL-driver

  3. Sådan laver du joinforespørgsler ved hjælp af Sequelize på Node.js

  4. mysqli_real_escape_string fungerer ikke korrekt