Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment trouver N enregistrements consécutifs dans une table à l'aide de SQL

Vous devez faire correspondre votre table contre elle-même, comme s'il y avait 2 tables. Vous utilisez donc deux alias, o1 et o2 pour faire référence à votre table :

SELECT DISTINCT o1.customer, o1.product, o1.datum, o1.sale
  FROM one o1, one o2
  WHERE (o1.datum = o2.datum-1 OR o1.datum = o2.datum +1)
  AND o1.sale = 'NO' 
  AND o2.sale = 'NO'; 
 customer | product |   datum    | sale 
----------+---------+------------+------
 X        | A       | 2010-01-03 | NO
 X        | A       | 2010-01-04 | NO
 X        | A       | 2010-01-06 | NO
 X        | A       | 2010-01-07 | NO
 X        | A       | 2010-01-08 | NO

Notez que j'ai effectué la requête sur une base de données postgresql - peut-être que la syntaxe diffère sur ms-sql-server, peut-être à l'alias 'FROM one AS o1' peut-être, et peut-être que vous ne pouvez pas ajouter/soustraire de cette façon.