SQL - PEGAR ID MAIOR
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:
Tenta aàe diz no que deu...flw
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
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
não da para colocar funções de agregação na clausula where.. =/
pelo menos no access e no postgre eu não consegui
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...
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
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
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
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
espero ter ajudado
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)
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)
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?
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?
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.
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.
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]
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]
Tópico encerrado , respostas não são mais permitidas