Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So finden Sie N aufeinanderfolgende Datensätze in einer Tabelle mit SQL

Sie müssen Ihren Tisch mit sich selbst abgleichen, als ob es 2 Tische gäbe. Sie verwenden also zwei Aliase, o1 und o2, um auf Ihre Tabelle zu verweisen:

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

Beachten Sie, dass ich die Abfrage in einer Postgresql-Datenbank durchgeführt habe - möglicherweise unterscheidet sich die Syntax auf dem ms-sql-Server, möglicherweise beim Alias ​​​​'FROM one AS o1', und möglicherweise können Sie auf diese Weise nicht hinzufügen / subtrahieren.