sql >> Databasteknik >  >> RDS >> Sqlserver

Identifiera underuppsättning av poster baserat på datum och regler i SQL Server

Du kan använda LAG() och LEAD() analytiska funktioner:

SELECT * FROM (
    SELECT t.*,
           LAG(t.linked,1,0) OVER(ORDER BY t.FromDate DESC) as rnk_1, --Next one
           LEAD(t.linked,1,0) OVER(ORDER BY t.FromDate DESC) as rnk_2, -- Last one,
           LEAD(t.linked,2,0) OVER(ORDER BY t.FromDate DESC) as rnk_3 -- Last two,
    FROM YourTable t) s
WHERE ((s.rnk_1 = 1 OR s.rnk_2 = 1) AND s.linked = 1) OR 
      (s.rnk_2 = 1 and s.rnk_3 = 1 and s.linked = 0)
ORDER BY s.FromDate DESC

Detta kommer att resultera i poster som har linked = 1 och föregående/nästa post är också 1.



  1. Varför går mysql-anslutningen av (förlorade anslutningen till MySQL-servern under frågefel)

  2. Hur man får UTC-värde för SYSDATE på Oracle

  3. MyBatis enum användning

  4. Genomsnittligt antal inlägg per timme på MySQL?