Boas. Gostaria da ajuda dos colegas para analisar a possibilidade de otimizar a seguinte situação: Tenho um "select" simples para trazer um registro específico e que atenda uma determinada condição (where) - Após este "select", recupero o "id" deste registro e utilizo para fazer mais dois "select", um para trazer o registro anterior e outro para o próximo (id) utilizando MIN e MAX. Tem como fazer tudo isso em um único "select" ?
Galera não sei o porque mas n select abaixo eu preciso mostrar o ultimo registro de uma das datas que são lançadas.
SELECT IO.ID_IN_OUT TICKET,
TO_CHAR(IO.TIME_ARRIVAL, 'DD/MM/YYYY HH24:MI') CHEGADA,
TO_CHAR(IO.TIME_RELEASE_IN, 'DD/MM/YYYY HH24:MI') LIBERADO,
TO_CHAR(IO.TIME_IN, 'DD/MM/YYYY HH24:MI') ENTRADA,
SUBSTR(SP.NAME, 0, 18) TRANSPORTADORA,
SUBSTR(DR.NAME, 0, 18) MOTORISTA,
VE.PLATE PLACA,
(SELECT DISTINCT MAX(TOS.PLATZ) DOCA
FROM PICKAUF PI,
AUFTRAEGE TOS,
(SELECT IO.ID_IN_OUT,
MAX(IO.TIME_RELEASE_PP) TIME_RELEASE_PP,
IOP.DOCUMENT,
MAX(IO.TIME_OUT) TIME_OUT
FROM IN_OUT IO, IN_OUT_POS IOP
WHERE IO.ID_IN_OUT = IOP.ID_IN_OUT
--AND IO.ART_IN_OUT IN ('CA', 'CCE', 'CC')
AND IO.STAT <> '80'
GROUP BY IOP.DOCUMENT, IO.ID_IN_OUT) SAD
WHERE PI.CHARGE = TOS.NR_AUF
AND SAD.ID_IN_OUT = IO.ID_IN_OUT
AND SAD.DOCUMENT(+) =
REPLACE(TRANSLATE(TOS.HINW_ZUST, '/-', ' '), ' ')
GROUP BY SAD.ID_IN_OUT) DOCA
FROM IN_OUT IO, SPEDITEURE SP, VEHICLE VE, TRACTOR TR, DRIVER DR
WHERE IO.STAT <> '80'
AND IO.TIME_ARRIVAL IS NOT NULL
AND TR.ID_TRACTOR = IO.ID_TRACTOR
AND DR.ID_DRIVER = IO.ID_DRIVER
AND VE.ID_VEHICLE = IO.ID_VEHICLE
AND IO.TIME_RELEASE_PP IS NULL
AND SP.ID_SPEDITEUR = IO.ID_SPEDITEUR
AND IO.ART_IN_OUT IN ('CA', 'CC', 'CCE', 'CV')
and rownum = '1'
ORDER BY TO_CHAR(IO.TIME_RELEASE_IN, 'DD/MM/YYYY HH24:MI')
Neste Select temos as datas de CHEGADA, LIBERADO, ENTRADA. eu preciso mostrar o ultimo registro do LIBERADO. Eu já fiz um max porém não retornou.Ela será utilizada em um telão no pátio de uma empresa.
Galera estou com uma consulta que travei em uma situação.
Eu preciso buscar as ultimas informações de uma Nota fiscal.
NUMERO DA NF | DATA FATURAMENTO | COBERTURA
neste select ele utiliza como parâmetro o lote cadastrado no sistema de estoque, e ao pesquisar ele volta a Data do faturamento e cobertura corretos porém o numero da NF é outro bem antiga.
O que posso estar fazendo errado nesta consulta?? segue a query
SELECT TO_CHAR(MAX(OS.NR_NF)) NOTA,
TO_CHAR(MAX(TO_DATE(REPLACE(OS.DATE_BILL, '/.', ''), 'dd/mm/yy')),
'dd/mm/yyyy') DATA_FAT,
TO_CHAR(MAX(TO_DATE(REPLACE(IT.DIV_6, '/.', ''), 'dd/mm/yy')),
'dd/mm/yyyy') COBERTURA
FROM BILL_OS_ITEM IT, BILL_OS OS, BILL_ITEM B
WHERE OS.LAGER = IT.LAGER
AND OS.ID_KLIENT = IT.ID_KLIENT
AND OS.ID_OS = IT.ID_OS
AND IT.LAGER = OS.LAGER
AND IT.ID_OS = OS.ID_OS
AND IT.BILLITE = B.BILLITE
AND OS.STATUS <> '80'
--AND OS.NR_NF = '119247'
AND IT.DIV_1 = 'EX16208816'
A nota fiscal que deveria retornar ´seria a 119247, porém vem 99336.
Pessoal, me deparei com um problema.
Tenho uma Tabela, onde fica armazenada as transações dos clientes.
Cada transação tem vários registros com o campo STATUS.
Preciso fazer um MAX, para pegar a ultima transação por data, e assim saber qual foi o status da mesma.
Mas ao utilizar o MAX e selecionar o campo STATUS ele me traz todos os registro, porque o mesmo não pode agrupar por status, por conter valores diferentes.
É possível criar alguma forma de selecionar no meu caso a ultima transação por data (MAX) e trazer o campo status?
Seja com alguma procedure, ou outra função do ORACLE.
oi, sou novo por aqui! desculpe se a pergunta é muito simples.... tenho duas tabelas:
TABELA: atendimento:
cd_item
data_atend
nome_cliente
TABELA: documento_clinico
cd_doc
cd_item
data_doc
o tenho a relação 1 atendimento para muitos docs. Quero criar um código que diz o número do atendimento e a data do doc mais antigo (apenas 1). todas as tentativas duplicam o nome do cliente