Lucas_Camara
Será que assim resolve:
SELECT t.data_pregao, t.ativo, t.valor_cotacao, t.arquivo
FROM tabela t
WHERE t.ativo IN (
SELECT t1.ativo
FROM tabela t1
WHERE t1.valor_cotacao = (
SELECT MAX(t2.valor_cotacao)
FROM tabela t2
WHERE t1.ativo = t2.ativo
AND t2.valor_cotacao IS NOT NULL
)
)
Não sou muito bom em banco, acredito que tenha forma melhor de tentar fazer isso que vc precisa.
kabelo0
Lucas, tentei aqui mas fica rodando e não finaliza.
assim como uma outra forma que tentei…
select a.dt_pregao, a.co_ativo,
nullif(a.vr_cotacao, (select b.vr_cotacao
from tabela b
where b.co_ativo = a.co_ativo and b.dt_pregao between '2020-07-01' and '2020-07-30' and b.vr_cotacao is not null
order by b.dt_pregao desc limit 1))
from tabela a
where a.dt_pregao between '2020-07-01' and '2020-07-30'
order by a.dt_pregao desc;
não manjo de banco e estou quebrando a cabeça para fazer essa consulta.
Valeu cara!!!
Lucas_Camara
E assim?
SELECT
a.dt_pregao,
a.co_ativo,
a.vr_cotacao
FROM tabela a
WHERE a.dt_pregao BETWEEN '2020-07-01' AND '2020-07-30'
AND a.co_ativo IN (
SELECT MAX(b.co_ativo)
FROM tabela b
WHERE b.co_ativo = a.co_ativo
AND b.dt_pregao BETWEEN '2020-07-01' AND '2020-07-30'
AND b.vr_cotacao IS NOT NULL
)
ORDER BY a.dt_pregao DESC;
Tinha pensado numa parada errado na primeira query que mandei.
kabelo0
vou tentar aqui, o problema é que assim vai trazer o maior valor, creio, e preciso do ultimo e pode não ser o maior.