Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

przejdź do następnego wiersza, gdy kolumna zawiera określoną wartość (sql server 2008)

Istnieje stosunkowo skuteczny sposób określenia, czy dane są poprawne — no, prawie. Określi, czy w danych brakuje „1” lub „2”. Ta wersja nie określa, czy pierwszy identyfikator to „1”, ponieważ Twoje pytanie o tym nie wspomina.

Najlepszym rozwiązaniem jest użycie lag() i lead() . Jednak SQL Server 2008 nie obsługuje tych funkcji. Więc podejdźmy do tego jako do luki i wysp. Czy są jakieś sytuacje z więcej niż 1 „1” lub „2” w wierszu dla danego id ? Poniższy kod powinien znaleźć te anomalie:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak pisać znaki UTF-8 za pomocą wstawiania zbiorczego w programie SQL Server?

  2. SQL Server ORDER BY data i wartości null trwają

  3. Automatyczne usuwanie zablokowanych procesów w MS SQL Server

  4. Kolumna podobna do tożsamości, ale oparta na kryteriach Grupuj według

  5. Dane przestawne SQL z dynamiczną listą kolumn