SQL - PEGAR ID MAIOR

USUARIO.EXCLUIDOS 17/04/2007 15:44:32
#212355
Cara, meu cérebro tá meio falho hoje, mas pelo que entendi você quer pegar apenas um registro, o de maior código, certo?

Então tente:

SELECT A.Codigo, A.Nome AS [Nome do Produto], B.Nome AS Marca,
IIf(IsNull(C.ValorUnit),0,C.ValorUnit)+((IIf(IsNull(C.ValorUnit),0,C.ValorUnit)*A.MLAvista)/100) AS Avista,
IIf(IsNull(C.ValorUnit),0,C.ValorUnit)+((IIf(IsNull(C.ValorUnit),0,C.ValorUnit)*A.MLPrazo)/100) AS [A Prazo],
C.Codigo AS MaxDeCodigo
FROM Produtos_EntradaDET C RIGHT JOIN (Produtos A LEFT JOIN Produtos_Marca B ON A.CodigoMarca = B.Codigo) ON C.CodigoProduto = A.Codigo
WHERE C.Codigo = Max(C.Codigo)
ORDER BY A.Nome



Tenta aí e diz no que deu...flw
HUGOSSOUZA 17/04/2007 15:52:30
#212358
Matioli,
não da para colocar funções de agregação na clausula where.. =/
pelo menos no access e no postgre eu não consegui
USUARIO.EXCLUIDOS 17/04/2007 15:59:44
#212364
Citação:

HUGOSSOUZA escreveu:
Matioli,
não da para colocar funções de agregação na clausula where.. =/
pelo menos no access e no postgre eu não consegui



No Access se não me engano dá...Mas tb não é certeza...
USUARIO.EXCLUIDOS 17/04/2007 16:00:54
#212365
Mas também acho q dá pra usar o TOP:

SELECT TOP 1 A.Codigo, A.Nome AS [Nome do Produto], B.Nome AS Marca,
IIf(IsNull(C.ValorUnit),0,C.ValorUnit)+((IIf(IsNull(C.ValorUnit),0,C.ValorUnit)*A.MLAvista)/100) AS Avista,
IIf(IsNull(C.ValorUnit),0,C.ValorUnit)+((IIf(IsNull(C.ValorUnit),0,C.ValorUnit)*A.MLPrazo)/100) AS [A Prazo],
Max(C.Codigo) AS MaxDeCodigo
FROM Produtos_EntradaDET C RIGHT JOIN (Produtos A LEFT JOIN Produtos_Marca B ON A.CodigoMarca = B.Codigo) ON C.CodigoProduto = A.Codigo
ORDER BY MaxDeCodigo

CLEVERTON 17/04/2007 17:53:05
#212394
HUGO
não existem Colunas repetidas

Um é multiplicado pelo MLAvista, e outro pelo MLPrazo



Pessoal eu tou tentando fazer o seguinte.

Eu quero pegar TODOS Os registros da Tabela Produtos.

Se houver alguma registro Correspondente (Produtos.Codigo=Produtos_EntradaDET) pegue o maior Produtos_EntradaDET.Codigo e faça os calculos


se não houver deixe simples 0 como já está.

O problema é que tá vindo todos os dois registros que estão na tabela Produtos_EntradaDET.CodigoProduto=114, mas eu só quero pegar o ID Maior

FFCOUTO 18/04/2007 17:55:27
#212616
Cleverton, tente tirar os campos a vista e a prazo, como são diferentes ele vai puxar os 2 mesmos. retire-os e acrescente o DISTINCTROW. acho q irá funcionar. tive um caso parecido e tive q remover um campo de valor pois sempre eram diferentes para cada registro.

espero ter ajudado
USUARIO.EXCLUIDOS 18/04/2007 23:22:49
#212652
Use uma sub-query na clausula WHERE.

SELECT A.Codigo, A.Nome AS [Nome do Produto], B.Nome AS Marca,
IIf(IsNull(C.ValorUnit),0,C.ValorUnit)+((IIf(IsNull(C.ValorUnit),0,C.ValorUnit)*A.MLAvista)/100) AS Avista,
IIf(IsNull(C.ValorUnit),0,C.ValorUnit)+((IIf(IsNull(C.ValorUnit),0,C.ValorUnit)*A.MLPrazo)/100) AS [A Prazo],
Max(C.Codigo) AS MaxDeCodigo
FROM Produtos_EntradaDET C RIGHT JOIN (Produtos A LEFT JOIN Produtos_Marca B ON A.CodigoMarca = B.Codigo) ON C.CodigoProduto = A.Codigo
WHERE A.Codigo = (SELECT Max(Codigo) FROM Produtos_entradaDET WHERE Codigo = A.Codigo)



CLEVERTON 18/04/2007 23:41:15
#212653
JOSENIZ
apareceu dois registros, mas não entendi muito o resultado, na verdade é para aparecer todos os produtos.

FFCOUTO
não entendi sua idéia, se eu tirar os campos como vou saber o preço do produto?
FFCOUTO 19/04/2007 08:57:36
#212681
Cleverton, o preço do produto vc terá q calcular a parte com outro select na tabela de produtos. Não haverá perda de desempenho. Vc testou sem eses dois campos?

como havia explicado, vc colocou dentro da cláusula GROUP BY o valor dos produtos, então para aparecer um registro somente, todos os campos devem ser iguais. como os preços são diferentes é gerado 2 ou mais registros diferentes também. é assim q funciona o agrupamento.
CLEVERTON 19/04/2007 10:27:51
#212700
FFCOUTO

Colocando o SQL que repete os dados demora 1 seg

e fazendo da forma que vc fala demora 07 seg (1700 registros)

acho que por enquanto vou deixar desta forma que vc falou mesmo.

Mas aguardo respostas.

quem sabe não encontramos uma solução [S95] [S25] [S47]
Página 2 de 5 [43 registro(s)]
Tópico encerrado , respostas não são mais permitidas