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

Porównaj bieżący wiersz z poprzednim wierszem w SQL Server

Możesz użyć następującego zapytania:

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

Pole grp identyfikuje plasterki (zwane również wyspami) kolejnych rekordów o tym samym OutComeID wartość. Zapytanie zewnętrzne używa grp w celu wyliczenia każdego rekordu, który należy do '16' plasterek. Rekordy należące do innych plasterków mają przypisaną wartość 0 .

Pokaz tutaj




  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 usunąć domyślną wartość z kolumny w tabeli?

  2. Modyfikuj tabelę:Jak zmienić atrybut „Zezwalaj na wartości null” z wartości „not null” na „zezwalaj na wartość null”?

  3. JSON_QUERY() Przykłady w SQL Server (T-SQL)

  4. Schemat z procedury składowanej

  5. Co blokuje | zasoby bufora komunikacyjnego oznaczają?