diferença de custo entre lojas

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
wilke
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Sex, 23 Nov 2007 9:26 am
Localização: porto velho -ro

ola pessoal
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. :cry:
NaPraia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 22 Fev 2008 8:24 am
Localização: Floripa - SC

você foi muito vago na sua necessidade
não sei se você tem tabela loja, tabela produto, se está tudo embaralhado
e nem o que é custo_pmz
e o 10% seria em cima do quê???

mas deve ser algo do tipo

Selecionar tudo

select produto from tabela
where custo_pmz = custo*1.1
wilke
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Sex, 23 Nov 2007 9:26 am
Localização: porto velho -ro

amigo
seria mais ou menos assm

Selecionar tudo

 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
NaPraia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 22 Fev 2008 8:24 am
Localização: Floripa - SC

mas não está te trazendo diferenciado por loja?
você está usando o PL.CD_LOJA
talvez você esteja trazendo outros campos desnecessários.

e se o teu select for assim

Selecionar tudo

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 ....
wilke
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Sex, 23 Nov 2007 9:26 am
Localização: porto velho -ro

E QUE O MESMO PRODUTO , EXITEM NAS LOJAS COM CUSTO_PMZ DIFERENCIADO ,EU QUERO LISTAR
wilke
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Sex, 23 Nov 2007 9:26 am
Localização: porto velho -ro

ELE SO TRAZ CERTO,QUANDO EU ESPECIFICO UM PRODUTO , AI ELE
TRAZ A DIFERENÇA DE CUSTO_PMZ ENTRE LOJAS
wilke
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 46
Registrado em: Sex, 23 Nov 2007 9:26 am
Localização: porto velho -ro

amigo eu queria que ele fisesse assim
mais ou menos assim,

Selecionar tudo

 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;

Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes