Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como encontrar N registros consecutivos em uma tabela usando SQL


Você precisa combinar sua mesa contra si mesma, como se houvesse 2 mesas. Então você usa dois aliases, o1 e o2 para se referir à sua tabela:
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

Observe que eu realizei a consulta em um banco de dados postgresql - talvez a sintaxe seja diferente no ms-sql-server, talvez no alias 'FROM one AS o1' talvez, e talvez você não possa adicionar/subtrair dessa maneira.