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

Identifikujte podmnožinu záznamů na základě data a pravidel v SQL Server

Můžete použít LAG() a LEAD() analytické funkce:

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

Výsledkem budou záznamy, které mají linked = 1 a předchozí/následující záznam je také 1.



  1. php &mysql - procházet sloupce jednoho řádku a předávat hodnoty do pole

  2. Jak vybrat konkrétní sloupec z databáze místností s konkrétním parametrem v dotazu na místnost?

  3. count(*) a count(název_sloupce), jaký je rozdíl?

  4. Proč vám MySQL umožňuje seskupovat podle sloupců, které nejsou vybrány