Fórum Calculos entre tabelas de acordo com a data #33322
26/09/2005
0
[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
Curtir tópico
+ 0Posts
27/09/2005
Rjun
Gostei + 0
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_Cldacho que assim funciona...
Gostei + 0
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
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_CldGostei + 0
27/09/2005
Edjborges
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)