sql >> Database >  >> RDS >> Sqlserver

ga naar de volgende rij als een kolom een ​​bepaalde waarde bevat (sql server 2008)

Er is een relatief efficiënte manier om te bepalen of de gegevens correct zijn - nou ja, bijna. Het zal bepalen of er "1"-en of "2"-en in de gegevens ontbreken. Deze versie bepaalt niet of de eerste id "1" is, omdat uw vraag dat niet vermeldt.

De beste oplossing is om lag() . te gebruiken en lead() . SQL Server 2008 ondersteunt deze functies echter niet. Laten we dit dus benaderen als een kloof-en-eilanden. Zijn er situaties met meer dan 1 "1" of "2" op een rij voor een gegeven id ? De volgende code zou deze afwijkingen moeten vinden:

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. Een DELETE Pass-Through-query uitvoeren in SQL Server

  2. Hoe blanco gegevens in MySQL over te slaan?

  3. Is het mogelijk om naar het hele gegeven woord te zoeken in Full text search van mysql

  4. Selecteer een tweerichtingstabel in MySql