e o seguinte eu quero fazer uma select , que me traga a lista de produtos com custo_pmz diferenciado entre lojas , que esteja acima de 10% .
pessoal desde já eu agradeço pela ajuda de voces.

select produto from tabela
where custo_pmz = custo*1.1
select pl.cd_loja,pl.cd_produto ,pl.vl_custo
from tb_produto tp,tb_produto_loja pl,tb_
SELECT PL.CD_LOJA,
TP.CD_PRODUTO,
TP.NM_PRODUTO,
PL.VL_CUSTO_AQUISICAO,
PL.VL_VENDA,
ROUND(PL.VL_CUSTO_PMZ,2)VL_CUSTO_PMZ,
PL.VL_OFERTA,
SUM(LC.QT_PRODUTO_VENDIDO)QUANTIDADE,
SUM(PL.VL_VENDA * LC.QT_PRODUTO_VENDIDO )VL_TOTAL,
TRUNC(SUM(LC.VL_LUCRO_DIA /LC.VL_FATURAMENTO_DIA *100)*100)/100 MARGEM
FROM
TB_PRODUTO TP,
TB_PRODUTO_LOJA PL,
TB_LUCRO LC
WHERE PL.CD_PRODUTO=TP.CD_PRODUTO AND
TP.CD_PRODUTO=LC.CD_PRODUTO AND
TP.FL_ATIVO_INATIVO='A' AND
LC.CD_LOJA=PL.CD_LOJA AND
TP.CD_DEPARTAMENTO=LC.CD_DEPARTAMENTO AND
TP.CD_SETOR=LC.CD_SETOR AND
TP.CD_GRUPO=LC.CD_GRUPO AND
TP.CD_SUB_GRUPO=LC.CD_SUB_GRUPO AND
TP.CD_DEPARTAMENTO LIKE:CD_DEPARTAMENTO AND
TP.CD_SETOR LIKE:CD_SETOR AND
LC.DT_VENDA BETWEEN FN_CONV_DATA(:DT_INICIAL) AND FN_CONV_DATA(:DT_FINAL) AND
ROUND(PL.VL_CUSTO_PMZ,2) >:VL_CUSTO_PMZ AND
ROUND(PL.VL_CUSTO_PMZ,2) <> ROUND(LC.VL_CUSTO_PMZ,2 * 1.1) AND
PL.cd_loja in('001','020','022','023','026','027','029','034','030')
GROUP BY TP.CD_PRODUTO,
PL.CD_LOJA,
TP.NM_PRODUTO,
PL.VL_CUSTO_AQUISICAO,
PL.VL_VENDA,
PL.VL_CUSTO_PMZ,
PL.VL_OFERTA,
LC.QT_PRODUTO_VENDIDO
ORDER BY PL.CD_LOJA,TP.NM_PRODUTO
SELECT PL.CD_LOJA,
TP.CD_PRODUTO,
TP.NM_PRODUTO,
SUM(LC.QT_PRODUTO_VENDIDO)QUANTIDADE,
SUM(PL.VL_VENDA * LC.QT_PRODUTO_VENDIDO )VL_TOTAL
FROM ....
so que este exemplo, ele so esta com um produto, eu quero pegar todos ,para serem impressos
var vvlpmz :real;
vcdloja:integer;
vcount :integer;
vqtlja :integer;
vlojas :array[1..12]of string;
begin
vcdloja:= 0;
vvlpmz := 0;
vcount := 0;
vqtlja := 0;
qryvlr1.close;
qryvlr2.close;
qryvlr1.open;
qryvlr2.open;
vqtlja:= qryvlr1.recordcount;
qryvlr1.first;
while not qryvlr1.eof do begin
vcdloja:= vcdloja + 1;
vvlpmz := qryvlr1.fieldbyname('vl_custo_pmz').value;
qryvlr2.first;
while not qryvlr2.eof do begin
if vvlpmz <> qryvlr2.fieldbyname('vl_custo_pmz').value then
vcount:= vcount + 1;
qryvlr2.next;
end;
if vcount = vqtlja -1 then begin
qryachavldiferente.close;
qryachavldiferente.parambyname('vl_custo_pmz_').value:= vvlpmz;
qryachavldiferente.open;
vlojas[vcdloja]:= qryachavldiferente.fieldbyname('cd_loja').asstring;
end;
vvlpmz := 0;
vcount := 0;
qryvlr1.next;
end;
qryresultado.close;
qryresultado.sql.clear;
qryresultado.sql.add('select cd_loja, round(vl_custo_pmz,3)vl_custo_pmz');
qryresultado.sql.add(' from tb_produto_loja');
qryresultado.sql.add(' where cd_produto = ''00189005'' and');
qryresultado.sql.add(' cd_loja in(:cdloja1, :cdloja2, :cdloja3, :cdloja4, :cdloja5, :cdloja6, :cdloja7, :cdloja8, :cdloja9, :cdloja10, :cdloja11, :cdloja12)');
qryresultado.parambyname('cdloja1' ).asstring := vlojas[1] ;
qryresultado.parambyname('cdloja2' ).asstring := vlojas[2] ;
qryresultado.parambyname('cdloja3' ).asstring := vlojas[3] ;
qryresultado.parambyname('cdloja4' ).asstring := vlojas[4] ;
qryresultado.parambyname('cdloja5' ).asstring := vlojas[5] ;
qryresultado.parambyname('cdloja6' ).asstring := vlojas[6] ;
qryresultado.parambyname('cdloja7' ).asstring := vlojas[7] ;
qryresultado.parambyname('cdloja8' ).asstring := vlojas[8] ;
qryresultado.parambyname('cdloja9' ).asstring := vlojas[9] ;
qryresultado.parambyname('cdloja10').asstring := vlojas[10];
qryresultado.parambyname('cdloja11').asstring := vlojas[11];
qryresultado.parambyname('cdloja12').asstring := vlojas[12];
qryresultado.sql.add('order by cd_loja');
qryresultado.open;
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes