sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan finder du N på hinanden følgende poster i en tabel ved hjælp af SQL

Du skal matche dit bord mod sig selv, som om der var 2 borde. Så du bruger to aliaser, o1 og o2 til at henvise til din tabel:

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

Bemærk, at jeg udførte forespørgslen på en postgresql-database - måske er syntaksen anderledes på ms-sql-server, måske ved aliaset 'FROM one AS o1' måske, og måske kan du ikke tilføje/subtrahere på den måde.



  1. Udskiftning af tegn i en streng baseret på rækker i en tabel sql

  2. Kan Mysql opdele en kolonne?

  3. Nodejs Cluster med MySQL-forbindelser

  4. Udskrive resultater af en SELECT-forespørgsel som forudformateret tekst i PHP?