SQL Data Maxima e status
Galera, bom dia !
estou com um dilema
tenho uma tabela historico aqui.
EX:
1 tabela
Data numero_entrega status
10-01 00000 a
11-01 11111 b
13-01 22222 c
14-01 11111 d
15-01 22222 a
16-01 22222 d
17-01 22222 a
eu preciso pegar realizar uma consulta para pegar os dados do ultimo dia
com o status D
ex:
Data numero_entrega status
16-01 22222 d
estou tentando isso de tudo, criar with fazer lefts e tudo mais mas nao consigo.
tentei com o Max mas ele pega o dia 17 e nao traz o status que preciso.
sem falar q tenho q fazer outros joins
estou com um dilema
tenho uma tabela historico aqui.
EX:
1 tabela
Data numero_entrega status
10-01 00000 a
11-01 11111 b
13-01 22222 c
14-01 11111 d
15-01 22222 a
16-01 22222 d
17-01 22222 a
eu preciso pegar realizar uma consulta para pegar os dados do ultimo dia
com o status D
ex:
Data numero_entrega status
16-01 22222 d
estou tentando isso de tudo, criar with fazer lefts e tudo mais mas nao consigo.
tentei com o Max mas ele pega o dia 17 e nao traz o status que preciso.
sem falar q tenho q fazer outros joins
Kelvincorrea
Curtidas 0
Respostas
Emerson Nascimento
21/12/2022
deve ser mais ou menos isto...
ou apenas
select t1.* from tabela t1 where upper(t1.status) = 'D' and right(t1.data,2)+left(t1.data,2) = (select max(right(t2.data,2)+left(t2.data,2)) from tabela t2 where upper(t2.status) = t1.status)
ou apenas
select top 1 -- aqui depede do SGBDR: pode ser top, first, rowcount... * from tabela where upper(status) = 'D' order by right(data,2)+left(data,2) desc
GOSTEI 0
Arthur Heinrich
21/12/2022
Galera, bom dia !
estou com um dilema
tenho uma tabela historico aqui.
EX:
1 tabela
Data numero_entrega status
10-01 00000 a
11-01 11111 b
13-01 22222 c
14-01 11111 d
15-01 22222 a
16-01 22222 d
17-01 22222 a
eu preciso pegar realizar uma consulta para pegar os dados do ultimo dia
com o status D
ex:
Data numero_entrega status
16-01 22222 d
estou tentando isso de tudo, criar with fazer lefts e tudo mais mas nao consigo.
tentei com o Max mas ele pega o dia 17 e nao traz o status que preciso.
sem falar q tenho q fazer outros joins
estou com um dilema
tenho uma tabela historico aqui.
EX:
1 tabela
Data numero_entrega status
10-01 00000 a
11-01 11111 b
13-01 22222 c
14-01 11111 d
15-01 22222 a
16-01 22222 d
17-01 22222 a
eu preciso pegar realizar uma consulta para pegar os dados do ultimo dia
com o status D
ex:
Data numero_entrega status
16-01 22222 d
estou tentando isso de tudo, criar with fazer lefts e tudo mais mas nao consigo.
tentei com o Max mas ele pega o dia 17 e nao traz o status que preciso.
sem falar q tenho q fazer outros joins
Tome cuidado sempre que for acessar tabelas com dados históricos, para que não gere um problema de planos de acesso ruim.
No seu exemplo, o último dia (17-01) não possui registros com status ''''d''''. Mas, no seu exemplo re resultado, o dado retornado é do último dia em que o status ''''d'''' aparece.
Para isso, você precisa de um índice pelas colunas (status, data), para que o plano de acesso seja eficiente:
select Data, numero_entrega, status
from tabela
where
Data = (select max(Data) from tabela where status = ''''d'''') and
status = ''''d''''
GOSTEI 0