Obter Informações de Outras Linhas no Mesmo Select
Tendo um banco de dados para controle de despesas:
1 | select * from despesas |
id | valor | descricao |
---|---|---|
1 | 12,00 | Almoço |
2 | 150,00 | Gasolina |
3 | 30,00 | Jantar |
4 | 61,00 | Conta de água |
5 | 180,00 | Conta de Luz |
6 | 100,00 | Internet |
Agora queremos exibir na mesma consulta, a despesa anterior, a atual e a próxima despesa do mês.
Para isso precisamos saber qual o valor da linha anterior e o valor da linha posterior do select.
Para isso precisamos fazer LEFT JOIN com a própria tabela. Veja o exemplo:
1 | select |
Resultado:
DESPESA_ANTERIOR | DESPESA_ATUAL | DESPESA_POSTERIOR |
---|---|---|
(null) | Almoço | Gasolina |
Almoço | Gasolina | Jantar |
Gasolina | Jantar | Conta de água |
Jantar | Conta de água | Conta de luz |
Conta de água | Conta de luz | Internet |
Conta de luz | Internet | (null) |
Para saber as despesas anterioes e posteriores ao dia 3:
1 | select |
Resultado:
DESPESA_ANTERIOR | DESPESA_ATUAL | DESPESA_POSTERIOR |
---|---|---|
Gasolina | Jantar | Conta de água |