Ho una tabella contenente più colonne e voglio verificare il valore di una colonna, selezionare le righe dopo quel valore di colonna fino a quando non viene visualizzato un valore di colonna separato. Ho provato a usare BETWEEN
, ma se i valori di colonna sono numeri interi cerca solo numeri tra i numeri interi.
Ad esempio, se ho una tabella come questa:
valore tempo id t1 12:00 PM 15 T1 12:02 4 t1 12:03 PM 7 T1 12:05 16 t5 12:10 PM 250 t5 12:15 PM 15 t8 11:00 AM 15 t8 3:00 PM 2 t8 15:05 100 T2 19:00 15 T2 19:01 16 t15 5:00 AM 35
Vorrei ottenere le righe tra i valori di 15 e 16. Fondamentalmente, se potessi ordinare per id
, quindi time
, e raccogliere le righe dopo che appare 15 finché non vi è un valore di 16 all'interno di quello stesso id
. Se non esiste un valore 16, ad esempio vorrei le successive 100 righe e quindi cerco il valore successivo di 15.
Vorrei che la query restituisse questo:
valore tempo id t1 12:00 PM 15 T1 12:02 4 t1 12:03 PM 7 T1 12:05 16 T2 19:00 15 T2 19:01 16 t5 12:15 PM 15 t8 11:00 AM 15 t8 3:00 PM 2 t8 15:05 100
Potrebbe essere fonte di confusione. Ho provato:
SELECT * FROM table WHERE value BETWEEN '15' AND '16' ORDER BY id, time
come punto di partenza, ma restituisce solo righe con valori di 15 o 16 perché sono numeri interi.
Voglio ordinare la tabella per id
allora time
. Queste voci vengono aggiunte automaticamente tramite un altro sistema, quindi sto cercando di interrogare la tabella per intervalli di valori specifici.
Qualche idea?
Una precisazione:
Se avessi le righe con 15, 1, 16, 7, 15, 2, 16
la stessa id
, vorrei entrambe le "isole": 15, 1, 16, 15, 2, 16
.