Pessoal, bom dia!
Eu tenho uma tabela com código do cliente, numero de nota, valor, etc., e quero trazer a data de sua última compra. Um cliente pode ter comprado várias vezes, ele está trazendo todas as compras.
Queria postar o código aqui, mas não consigo porque o site diz que estou publicando uma URL.
Eu quero que ele traga apenas a última compra, ou seja, a que possua data maior (de todos os clientes).
Alguém têm noção de como posso fazer isso?
Obrigado.
Maior Data
- gpereira
- Rank: Programador Sênior
- Mensagens: 61
- Registrado em: Sáb, 10 Dez 2011 10:56 am
Gustavo Antonio Pereira
OCA Oracle Database 10g Administrator Certified Associate
OCA Oracle Database 10g Administrator Certified Associate
Jerry,
Não sei bem se entendi seu problema..
mas seria isso?
Abç..
Não sei bem se entendi seu problema..
mas seria isso?
SELECT id_cli, ...., DATA_COMPRA
FROM CLIENTE
WHERE ROWNUM <= 1 --TRAZENDO PRIMEIRA LINHA DA COLUNA
ORDER BY DESC DATA_COMPRA --ORDENANDO DE FORMA DECRESCENTE
- gpereira
- Rank: Programador Sênior
- Mensagens: 61
- Registrado em: Sáb, 10 Dez 2011 10:56 am
Gustavo Antonio Pereira
OCA Oracle Database 10g Administrator Certified Associate
OCA Oracle Database 10g Administrator Certified Associate
Apenas corrigindo o primeiro comentario...gpereira escreveu:Jerry,
Não sei bem se entendi seu problema..
mas seria isso?
Abç..SELECT id_cli, ...., DATA_COMPRA FROM CLIENTE WHERE ROWNUM <= 1 --TRAZENDO PRIMEIRA LINHA DA COLUNA ORDER BY DESC DATA_COMPRA --ORDENANDO DE FORMA DECRESCENTE
-- PRIMEIRA LINHA DA CONSULTA
Gustavo, obrigado pela ajuda.
Na verdade, eu tenho uma tabela onde grava todas as notas fiscais, com todas as informações pertinentes á ela.
Eu preciso gerar um relatório que traga a última compra(faturamento) do cliente. Eu tentei com a cláusula MAX, mas como eu estou utilizando um TO_CHAR na data, não consigo utilizar o MAX.
Resumindo, eu preciso fazer um relatório de último faturamento por cliente, entendeu?
Eu imagino que eu tenha que fazer uma subquery, mas não tenho idéia de como fazer.
Obrigado.
Jerry
Na verdade, eu tenho uma tabela onde grava todas as notas fiscais, com todas as informações pertinentes á ela.
Eu preciso gerar um relatório que traga a última compra(faturamento) do cliente. Eu tentei com a cláusula MAX, mas como eu estou utilizando um TO_CHAR na data, não consigo utilizar o MAX.
Resumindo, eu preciso fazer um relatório de último faturamento por cliente, entendeu?
Eu imagino que eu tenha que fazer uma subquery, mas não tenho idéia de como fazer.
Obrigado.
Jerry
-
- Rank: DBA Júnior
- Mensagens: 190
- Registrado em: Sex, 27 Out 2006 11:12 am
- Localização: 88350000
Pablo
Tenta criar um sub select utilizando o MAX e depois você converte com o to_char..
fica + ou - assim:
Espero ter ajudado.
fica + ou - assim:
select to_char(campo)
from (
select max(campo_data) campo
from tabela c
)
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Qui, 15 Dez 2011 4:01 pm
Pablo,
Não precisa utilizar uma sub-query nesse exemplo que você passou. Veja:
Não precisa utilizar uma sub-query nesse exemplo que você passou. Veja:
select To_Char(max(campo_data),'mmrrrr') campo
from tabela c
No meu caso, tenho assim
Se eu colocar um MAX ali antes do campo data, não funciona.
to_char(to_date(NS.DATA_DA_EMISSAO,'yyyymmdd'),'dd/mm/yyyy')
- gpereira
- Rank: Programador Sênior
- Mensagens: 61
- Registrado em: Sáb, 10 Dez 2011 10:56 am
Gustavo Antonio Pereira
OCA Oracle Database 10g Administrator Certified Associate
OCA Oracle Database 10g Administrator Certified Associate
So para entender..jerry-sc escreveu:No meu caso, tenho assim
Se eu colocar um MAX ali antes do campo data, não funciona.to_char(to_date(NS.DATA_DA_EMISSAO,'yyyymmdd'),'dd/mm/yyyy')
O campo já não é do tipo date?
Não entendi porque você passa p data depois formatar em char..
Não poderia ser assim:
(to_char(NS.DATA_DA_EMISSAO, 'dd/mm/yyyy')
É tipo number... ele grava por exemplo 20120110
Infelizmente, ainda não deu certo...
-
- Rank: DBA Júnior
- Mensagens: 190
- Registrado em: Sex, 27 Out 2006 11:12 am
- Localização: 88350000
Pablo
Jerry...como você tinha dito que grava como number você pode fazer dessa forma (utilizando a data em que você deu exemplo):
caso não funcionar, poste o seu comando junto com a msg de erro
t+
select max(to_date(20120110,'yyyy/mm/dd')) from tabela
MAX(TO_DATE(20120110,'YYYY/MM/
------------------------------
10/1/2012
t+
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Bem,
(acabei errando ao enviar e estou escrevendo denovo., :/).
Se a data está em número não precisa converter antes do MAX.
Tenta algo assim:
(acabei errando ao enviar e estou escrevendo denovo., :/).
Se a data está em número não precisa converter antes do MAX.
Tenta algo assim:
Select *
from tab
where (cliente,data) IN (SELECT Cliente , MAX(data) group by cliente)
Muito bem!!! Agora deu certo, muito obrigado!!!!
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante