Ir para conteúdo
Fórum Script Brasil
  • 0

Calculo de totaliza e percentual na mesma query


sacseixas

Pergunta

Eu tenho essas dois select que já funcionam, porem gostaria de saber se tem como fazer uma consulta só.

O resultado esta sendo impresso em duas tabelas diferente.

Uma totalizando as vendas e outra dando o percentual referente a essas vendas. Abaixo as querys e as tabelas

strVendasListar = "SELECT LOJ.dsLOja, ORC.dsCategoria, sum(ORC.vlTotal) AS Total "&_

"FROM orcamento ORC , Loja LOJ "&_

"where ORC.idOrcamento in(SELECT idOrcamento FROM usuarioOrcamentoHistorico UOH "&_

"WHERE UOH.dsHistorico LIKE '"& dsMsg &"%' "&_

"AND UOH.dtData Between convert(smalldatetime, '"&dataInicial&"',103) AND convert(smalldatetime, '"&dataFinal&"',103)) "&_

"AND ORC.idLoja = '"&idLoja&"' " &_

"AND ORC.idLoja = LOJ.idLoja " &_

"AND ORC.idSituacao <> 14 "&_

"AND ORC.idSituacao <> 3 "&_

"GROUP BY LOJ.dsLOja, ORC.dsCategoria "&_

"Order by LOJ.dsLOja"

strPercentualVendasListar = "SELECT LOJ.dsLOja, ORC.dsCategoria, sum(ORC.vlTotal) AS Valor, "&_

"(sum(vlTotal)/(SELECT sum(vlTotal) AS Total FROM orcamento "&_

"where idOrcamento in(SELECT idOrcamento FROM usuarioOrcamentoHistorico WHERE dsHistorico LIKE '"& dsMsg &"%' "&_

"AND dtData Between convert(smalldatetime, '"&dataInicial&"',103) AND convert(smalldatetime, '"&dataFinal&"',103)))) AS Porcentagem "&_

"FROM orcamento ORC , Loja LOJ "&_

"where ORC.idOrcamento in(SELECT idOrcamento FROM usuarioOrcamentoHistorico UOH "&_

"WHERE UOH.dsHistorico LIKE '"& dsMsg &"%' "&_

"AND UOH.dtData Between convert(smalldatetime, '"&dataInicial&"',103) AND convert(smalldatetime, '"&dataFinal&"',103)) "&_

"AND ORC.idLoja = '"&idLoja&"' " &_

"AND ORC.idLoja = LOJ.idLoja " &_

"AND ORC.idSituacao <> 14 "&_

"AND ORC.idSituacao <> 3 "&_

"GROUP BY LOJ.dsLOja, ORC.dsCategoria "&_

"Order by LOJ.dsLOja"

HOje o resultado sai assim:

Primeira query retorna essa tabela abaixo

Produto Total

Cortina R$ 7.426,88

Estofado R$ 154,12

Persiana2 R$ 2.036,16

TOTAL GERAL R$ 9.617,16

Segunda query retorna essa tabela abaixo usando o valor do total geral

Produto Valor Percentual de venda

Cortina R$ 7.426,88 0,77%

Estofado R$ 154,12 0,02%

Persiana2 R$ 2.036,16 0,21%

O que eu quero esta aqui abaixo:

Totalizar e realizar o calculo na mesma query

Produto Valor Percentual de venda

Cortina R$ 7.426,88 0,77%

Estofado R$ 154,12 0,02%

Persiana2 R$ 2.036,16 0,21%

TOTAL GERAL R$ 9.617,16

Desde já agradeço a atenção

Obrigado

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Boa Tarde

Pelo que eu entedir da para fazer da seguinte forma:

SELECT 
        PERC.IDLOJA,
        PERC.dsLOja, 
        PERC.dsCategoria, 
        sum(PERC.vlTotal) AS Valor, 
        (sum(PERC.vlTotal)/(SELECT sum(PERC.vlTotal) AS Total ,
        sum(PERC.vlTotal) AS  Total
FROM 
    orcamento ORC INNER JOIN Loja LOJ ON 
        ORC.idLoja = LOJ.idLoja 
                    INNER JOIN ( SELECT
                                    ORC.IDLOJA,
                                    LOJ.dsLOja, 
                                    ORC.dsCategoria, 
                                    sum(ORC.vlTotal) AS Valor, 
                                    (sum(vlTotal)/(SELECT sum(vlTotal) AS Total 
                                FROM 
                                    orcamento 
                                where 
                                    idOrcamento in(SELECT idOrcamento FROM usuarioOrcamentoHistorico WHERE dsHistorico LIKE '"& dsMsg &"%' 
                                    AND dtData Between convert(smalldatetime, '"&dataInicial&"',103) 
                                    AND convert(smalldatetime, '"&dataFinal&"',103)))) AS Porcentagem
                                FROM 
                                    orcamento ORC , Loja LOJ 
                            where 
                                    ORC.idOrcamento in(SELECT idOrcamento FROM usuarioOrcamentoHistorico UOH
                                            WHERE UOH.dsHistorico LIKE '"& dsMsg &"%' 
                                            AND UOH.dtData Between convert(smalldatetime, '"&dataInicial&"',103) 
                                            AND convert(smalldatetime, '"&dataFinal&"',103)) 
                                            AND ORC.idLoja = '"&idLoja&"' 
                                            AND ORC.idLoja = LOJ.idLoja 
                                            AND ORC.idSituacao <> 14 
                                            AND ORC.idSituacao <> 3 
                                            GROUP BY 
                                                LOJ.dsLOja, 
                                                ORC.dsCategoria
                                            Order by 
                                                LOJ.dsLOja ) PERC ON 
                                            PERC.IDLOJA = ORC.idLoja
                                
where 
    ORC.idOrcamento in(SELECT idOrcamento FROM usuarioOrcamentoHistorico UOH WHERE UOH.dsHistorico LIKE '& dsMsg &%' AND UOH.dtData Between convert(smalldatetime, '"&dataInicial&"',103) AND convert(smalldatetime, '"&dataFinal&"',103)) 
    AND ORC.idLoja = '&idLoja&'  
    AND ORC.idSituacao <> 14 
    AND ORC.idSituacao <> 3 
GROUP BY 
    LOJ.dsLOja, 
    ORC.dsCategoria
Order by 
    LOJ.dsLOja

Não tive como testa por que não tenho um ambiente como o seu mas se tiver alguma duvida é so falar.

Espero poder ter ajudado.

Editado por Bruno Faria
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...