[firebase-br] Ajuda SQL
Sandro Souza
escovadordebits em gmail.com
Qui Maio 14 10:01:39 -03 2009
Bom dia/tarde Tiago.
Grande Tiago, tente o seguinte código:
SELECT
A.CODPRODUTO,
A.CODVENDEDOR,
A.CODCLIENTE,
A.DESCR_PROD,
A.VALOR,
A.DATA_EMISSAO
FROM
V_ULTPRODCOMPRADOS A
WHERE
(A.CODVENDEDOR = :CODVEN)AND
(A.DATA_EMISSAO IN(
SELECT
MAX(B.DATA_EMISSAO)
FROM
V_ULTPRODCOMPRADOS B
WHERE
(B.CODPRODUTO = A.CODPRODUTO)AND
(B.CODVENDEDOR = A.CODVENDEDOR)))
ORDER BY
A.CODPRODUTO,
A.CODVENDEDOR,
A.CODCLIENTE,
A.DESCR_PROD
Para agilizar essa consulta, crie um índice contendo os campos CODPRODUTO,
CODVENDEDOR e DATA_EMISSAO nessa ordem.
Espero ter ajudado mais que atrapalhado. :D
2009/5/14 Tiago <tijgrillo em gmail.com>
> Olâ a todos,
>
> Estou com um problema com este sql, se puderem me ajudar fico
> grato. Tenho uma tabela com mais ou menos assim:
>
> CODPRODUTO DESCR_PROD CODVENDEDOR CODCLIENTE DATA_EMISSAO VALOR
> 1 A
> 4 5 01/05/08 12,25
> 1 A
> 4 5 12/10/08 45,10
> 1 A
> 4 5 01/05/09 32,25
> 2 B
> 4 6 01/01/09 99,99
> 2 B
> 4 6 12/05/09 88,41
> 3 C
> 4 7 01/05/09 43,14
>
> O que quero é apenas 1 PRODUTO para sua DATA MAIS ATUAL
> (MAX()), por exemplo, o produto A viria só a terceira linha tabela acima.
> Meu problema é agrupar isto, sendo que o VALOR é diferente para cada
> registro.
>
> SELECT
> CODPRODUTO,
> CODVENDEDOR,
> CODCLIENTE,
> DESCR_PROD,
> VALOR, -- SEM ESTA LINHA TRAZ O QUE QUERO, COLOCANDO ELA, O PROBLEMA.
> MAX(DATA_EMISSAO) AS DATA_EMISSAO
> FROM
> V_ULTPRODCOMPRADOS UL
> WHERE
> CODVENDEDOR = :CODVEN
> GROUP BY
> CODPRODUTO,CODVENDEDOR,CODCLIENTE,DESCR_PROD
>
> Alguém tem alguma ideia?
>
> obrigado,
> Tiago
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista