Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tjlopes

Cotação menor preço

Recommended Posts

Vixe, agora não consigo, tô no trampo... teria que tirar um tempo para criar tabelas e testar conforme sua situação...Tente fazer ai com a tabela temporária, caso não consiga, tentamos pelo SQLServer...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Select     TOP(Select Count(distinct Medicamento) from Tabela1) Fornecedor, Medicamento, min(Valor) as Valor, min(ValorTotal) as ValorTotalFrom Tabela1 group by Fornecedor, Medicamento

Compartilhar este post


Link para o post
Compartilhar em outros sites
Select distinct(Medicamento),Fornecedor, min(Valor) as Valor, min(ValorTotal) as ValorTotalFrom Tabela1 group by Fornecedor, Medicamento

assim você pega todos os medicamentos com nome distintos e com o menor valor ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom entao, eu axo mais interessante fazer como o Mario disse, criar uma tabela temporaria...

dai você pode fazer algo assim:

 

with qry do begin	Close;	SQL.Clear;	SQL.Add('SELECT TOP 10 DISTINCT(MEDIC), MIN(VALOR) AS VALOR');	SQL.Add('FROM TABELA1 GROUP BY MEDIC');	Open; end;

dai usa outra qryAux pra filtrar todos os campos nescessarios (*) da tabela1 algo assim:

qryAux.SQL.Add('SELECT * FROM TABELA1 WHERE MEDIC='+ qryMedic.Text + ' AND VALOR =' + qryValor.Text);

isso dentro de um laço While... e dai manda pra tabela temp e usa a mesma pra compor o relatorio ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo, eu não sei que mágica você fez, eu só sei que tentei n instruções SQL diferente e nenhuma delas tava dando certo, mas na hora que eu resovi usar a que você passou sem o TOP 10, funcionou tudo do jeito que eu precisava. Obrigado pela ajuda e principalmente o pessoal que teve toda a paciência para tentar me ajudar. Valeu mesmo galera. Brigadão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

heheh...nesse caso o segredo esta no Distinct e no Group by ...que deve se utilizar somente uma coluna pra agrupar senão ele bagunça a seleção dos distincts ...vlw ... fiko feliz q conseguiu resolver o seu problema ... :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem querer abusar da boa vontade de vocês, me ajudem em mais uma coisa: eu resolvi fazer usando uma tabela temp só para testar e aprender (o que não custa nada), mas na hora que eu mando executar o comando me aparece a seguinte mensagem 'InvalidField name CAPECITABINA' sendo que CAPECITABINA é o nome de um produto e que stá na primeira posição do resultado da consulta. with Query1 do begin Close; SQL.Clear; SQL.Add('SELECT DISTINCT Medicamento, MIN(ValorTotal) AS ValorTotal '); SQL.Add('FROM ResultadoCotacao group by Produto'); Open; end; while not Query1.Eof do begin Query2.Close; Query2.SQL.Clear; Query2.SQL.Add('SELECT * FROM ResultadoCotacao WHERE Medicamento= '+ Query1Medicamento.Text + ' AND ValorTotal = ' + Query1ValorTotal.Text); Query2.open; end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimente colocar o QuotedStr ...

 

Query2.SQL.Add('SELECT * FROM ResultadoCotacao WHERE Medicamento= '+ QuotedStr(Query1Medicamento.Text)+ ' AND ValorTotal = ' + Query1ValorTotal.Text);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.