Estou usando uma consulta que encontrei no Stack Overflow para retornar uma linha na minha tabela quando um contador de produção é zerado no início de um turno. No entanto, ele também está retornando linhas quando o contador de produção muda de centenas para milhares, de milhares para dezenas de milhares, etc.
Então, se meus valores de contador são os seguintes:
não precisa | contador |
---|---|
1 | 700000 |
2 | 252 |
3 | 2178 |
4 | 4101 |
5 | 6027 |
6 | 7953 |
7 | 9876 |
8 | 11769 |
9 | 13695 |
10 | 15618 |
A consulta que usei foi:
SELECT results.* FROM table AS results WHERE
results.counter < (
SELECT prevs.counter FROM table as prevs WHERE
(prevs.ndx = results.ndx - 1)
)
Espero voltar:
não precisa | contador |
---|---|
2 | 252 |
Mas a consulta retorna o seguinte:
não precisa | contador |
---|---|
2 | 252 |
3 | 2178 |
8 | 11769 |
O problema ocorre porque sua consulta verifica se o contador da linha atual é menor que o contador da linha anterior.
E essa condição é satisfeita não apenas quando o contador é zerado, mas também quando há incrementos menores no contador (como devido à transferência de centenas para milhares, etc.).
Para identificar apenas as linhas onde o contador é "redefinido", você precisa adicionar uma condição adicional que defina uma "redefinição".
Estas alterações devem funcionar -