Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

отидете на следващия ред, когато колона съдържа определена стойност (sql сървър 2008)

Има сравнително ефективен начин да се определи дали данните са верни - почти. Той ще определи дали има липсващи "1" или "2" в данните. Тази версия не определя дали първият id е "1", защото въпросът ви не споменава това.

Най-доброто решение е да използвате lag() и lead() . SQL Server 2008 обаче не поддържа тези функции. Така че, нека подходим към това като празнина и острови. Има ли ситуации с повече от 1 „1“ или „2“ подред за даден id ? Следният код трябва да открие тези аномалии:

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. Хеширане на повече от 8000 байта в SQL Server

  2. Как да използвате изявление за случай за условно форматиране в заявка за избор - SQL Server / TSQL урок, част 116

  3. Връща една от двете колони в изглед - коя от двете не е нулева

  4. Замяна на NULL от резултатите на CASE заявка

  5. Как да импортирате DBF файл в SQL Server