sql >> Databáze >  >> RDS >> Sqlserver

Porovnejte aktuální řádek s předchozím řádkem na serveru SQL Server

Můžete použít následující dotaz:

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 identifikuje řezy (nazývané také ostrovy) po sobě jdoucích záznamů se stejným OutComeID hodnota. Vnější dotaz používá grp za účelem vyjmenování každého záznamu, který patří do '16' plátek. Záznamům, které patří do ostatních řezů, je přiřazena hodnota 0 .

Ukázka zde




  1. UTF16 hex na text

  2. Nahrazení NULL 0 v dotazu SQL serveru

  3. PHP, SQL limit dotazu pomocí proměnné php

  4. Jak rozdělit jednu buňku do více sloupců na serveru SQL 2008R2?