Calculos entre tabelas de acordo com a data

26/09/2005

0

Pessoal estou usando o select abaixo, que me retorna uma pesquisa na tabela de vendas, agrupando as vendas por grupo de produtos, me retornando o total faturado e a comissão a ser paga, de acordo com a MetaMensal: (Uso SQL Server 7, com delphi 7)

[color=green:8704fbe5e3]
SELECT
Descricao_Cls,
MetaMensal_Cld, ComisVend_Cld, Sum(Valor_Ven) as ValorFaturado,
CASE
WHEN Sum(Valor_Ven) >= MetaMensal_Cld THEN (Sum(Valor_Ven)*(ComisVend_Cld*Acima_Cld)/100)
WHEN Sum(Valor_Ven) < MetaMensal_Cld THEN (Sum(Valor_Ven)*(ComisVend_Cld*Abaixo_Cld)/100)
END AS Comissao
FROM
ClassificacaoProduto
LEFT JOIN
Produto ON Codigo_Cls = Classificacao_prod
LEFT JOIN
Vendas ON Produto_Ven=Codigo_Prod
LEFT JOIN
ClassificacaoProdDetalhes ON Codigo_cls=Codigo_Cld
GROUP BY
Descricao_Cls,
MetaMensal_Cld,
ComisVend_Cld [/color:8704fbe5e3]

Agora tenho um detalhe que está complicado, pode ocorrer o caso, onde será solicitado o relatório de tres meses por exemplo, até aí tudo bem é só filtrar a data da venda, o problema é que na tabela de parâmetros, ClassificacaoProdDetalhes, onde sao gravadas as metas, comissão do grupo de produtos, tbm é por data, por exemplo, cadastro um parâmetro com data de 01/07/2005, isso significa que todas as vendas a partir de 01/07/2005 devem seguir estes parâmetros, se eu cadastrar outros parâmetros em 01/08/2005, a vendas de 01/07/2005 até 31/07/2005 devem seguir os parâmetros de 01/07/2005 e as vendas a partir de 01/08/2005 devem seguir os parâmetros de 01/08/2005.
Espero ter sido claro, e se puderem me ajudar ficarei grato.
Um abraço a todos


Edjborges

Edjborges

Responder

Posts

27/09/2005

Rjun

Qual o campo você precisa obter de acordo com a data?


Responder

27/09/2005

Emerson Nascimento

Select
  Descricao_Cls, MetaMensal_Cld, ComisVend_Cld,
  Sum(ValorFaturado) ValorFaturado, Sum(Comissao) Comissao
from
  (SELECT
     CP.Descricao_Cls,
     CPD.MetaMensal_Cld, CPD.ComisVend_Cld, Sum(VEN.Valor_Ven) as ValorFaturado,
     CASE
       WHEN Sum(VEN.Valor_Ven) >= CPD.MetaMensal_Cld
       THEN (Sum(VEN.Valor_Ven)*(CPD.ComisVend_Cld*CPD.Acima_Cld)/100)
       ELSE (Sum(VEN.Valor_Ven)*(CPD.ComisVend_Cld*CPD.Abaixo_Cld)/100)
     END AS Comissao
   FROM
     ClassificacaoProduto CP
   LEFT JOIN
     Produto PRD ON (PRD.Classificacao_prod = CP.Codigo_Cls)
   LEFT JOIN
     Vendas VEN ON (VEN.Produto_Ven = PRD.Codigo_Prod)
   LEFT JOIN
     (Select Top 1 *
      From ClassificacaoProdDetalhes CProd
      Where CProd = CP.Codigo_cls and CProd.Data <= VEN.DataDaVenda
      Order by CProd.Data desc) CPD ON (CPD.Codigo_Cld = CP.Codigo_cls)
   WHERE {período e demais condições aqui}
   GROUP BY
     CP.Descricao_Cls,
     CPD.MetaMensal_Cld,
     CPD.ComisVend_Cld) TabelaAgrupada
Group by
  Descricao_Cls, MetaMensal_Cld, ComisVend_Cld


acho que assim funciona...


Responder

27/09/2005

Emerson Nascimento

uma pequena modificação (mas não testei nenhum dos casos)

Select 
  Descricao_Cls, MetaMensal_Cld, ComisVend_Cld, 
  Sum(ValorFaturado) ValorFaturado, Sum(Comissao) Comissao 
from 
  (SELECT 
     CP.Descricao_Cls, 
     CPD.MetaMensal_Cld, CPD.ComisVend_Cld, Sum(VEN.Valor_Ven) as ValorFaturado, 
     CASE 
       WHEN Sum(VEN.Valor_Ven) >= CPD.MetaMensal_Cld 
       THEN (Sum(VEN.Valor_Ven)*(CPD.ComisVend_Cld*CPD.Acima_Cld)/100) 
       ELSE (Sum(VEN.Valor_Ven)*(CPD.ComisVend_Cld*CPD.Abaixo_Cld)/100) 
     END AS Comissao 
   FROM 
     ClassificacaoProduto CP 
   LEFT JOIN 
     Produto PRD ON (PRD.Classificacao_prod = CP.Codigo_Cls) 
   LEFT JOIN 
     Vendas VEN ON (VEN.Produto_Ven = PRD.Codigo_Prod) 
   LEFT JOIN 
     (Select Top 1
        CProd.Codigo_Cld,
        CProd.MetaMensal_Cld, CProd.ComisVend_Cld,
        CProd.Acima_Cld, CProd.Abaixo_Cld
      From ClassificacaoProdDetalhes CProd 
      Where CProd = CP.Codigo_cls and CProd.Data <= VEN.DataDaVenda 
      Order by CProd.Data desc) CPD ON (CPD.Codigo_Cld = CP.Codigo_cls) 
   WHERE {período e demais condições aqui} 
   GROUP BY 
     CP.Descricao_Cls, 
     CPD.MetaMensal_Cld, 
     CPD.ComisVend_Cld) TabelaAgrupada 
Group by 
  Descricao_Cls, MetaMensal_Cld, ComisVend_Cld



Responder

27/09/2005

Edjborges

Vários campos, como MetaMensal_Cld, ComisVend_Cld, todos os campos que uso no select provenientes da tabela ClassificacaoProdDetalhes. (que tem o final com _Cld)


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar