Jump to content

Recommended Posts

ola pessoal, sera que voces podem me ajudar por gentileza, segue script

 

WITH Dados AS (

SELECT idOrcMatDet,
       idGrupo,
       idSubGrupo,
       omd.numeroOrcamento,
       orcmatdet_preco4lista,
       baseProduto       
  FROM OrcMatDet omd
 INNER JOIN ORCCAB cab
    ON omd.numeroOrcamento = cab.numeroOrcamento
 WHERE orccab_Cadastro BETWEEN '20-12-2017 00:00:00.000' AND '20-01-2018 00:00:00.000'
),


Resumo AS (
SELECT R.*,TotalGrupo = ( SELECT SUM(orcmatdet_preco4lista)
                            FROM  Dados R WHERE R.idSubGrupo = 04
                           )
     FROM Dados R
)
SELECT  * FROM Resumo order by idSubGrupo

 

----------------------------

 

me da este resultado 

 

idOrcMatDet    idGrupo    idSubGrupo    numeroOrcamento    orcmatdet_preco4lista    baseProduto    TotalGrupo
13900                    5                    04                      EL310010                    4115,21                            Eletrofrio    4115,21
13899                    5                   07                        EL310010                     0,00                            ariam    4115,21
13969                    5                    07                        EL310011                      0,00                            ariam    4115,21
13903                    5                    11                        EL310010                     548,44                            Eletrofrio    4115,21
13904                     5                    11                        EL310010                      645,20                            Eletrofrio    4115,21
13901                      5                    12                       EL310010                     4922,62                            Eletrofrio    4115,21
13902                     5                    12                        EL310010                     5013,93                             Eletrofrio    4115,21
13970                      5                    12                        EL310011                      3717,87                             Eletrofrio    4115,21
13971                     5                   12                        EL310011                      3915,09                            Eletrofrio    4115,21
13972                      5                   12                        EL310011                     3645,93                            Eletrofrio    4115,21
13973                      5                   12                       EL310011                      4077,69                            Eletrofrio    4115,21
13974                      5                   12                        EL310011                      685,26                            Eletrofrio    4115,21
13975                      5                    12                       EL310011                      3570,22                            fast    4115,21
13976                     5                    12                        EL310011                     3365,33                            Eletrofrio    4115,21
13977                      5                   12                        EL310011                      3732,83                            fast    4115,21

 

eu gostaria que no total grupo aparecesse o valor de cada IDSUBGRUPO 

 

 

 

 

Share this post


Link to post
Share on other sites

RESPOSTA

 

 

 

 

WITH Dados AS (

SELECT idOrcMatDet,
       idGrupo,
       idSubGrupo,
       omd.numeroOrcamento,
       orcmatdet_preco4lista,
       baseProduto       
  FROM OrcMatDet omd
 INNER JOIN ORCCAB cab
    ON omd.numeroOrcamento = cab.numeroOrcamento
 WHERE orccab_Cadastro BETWEEN '20-12-2017 00:00:00.000' AND '20-01-2018 00:00:00.000'
)

SELECT distinct R.idGrupo,baseProduto,
       TotalGrupo = SUM(orcmatdet_preco4lista) OVER(PARTITION BY idGrupo)
  FROM Dados R
order by idGrupo

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Rodymb
      Bom dia!
      Estou fazendo um select em uma tabela de cupom fiscal e preciso que me mostre o operador do caixa e o supervisor que liberou a venda, que no caso é convênio.
      A consulta que montei é a seguinte:
       
      select  c.m00ad as CUPOM,
              c.m00ac as PDV,
              c.m02ak as VALOR,
              p.descricao as FINALIZADORA,
              c.m02ah as OPERADOR,
              f.nome as NOME_OP,
              c.m02ao as SUPERVISOR,
              f.nome as NOME_SUP
      from zan_m02 c inner join tab_funcionario f
      on c.m02ao = f.cod_funcionario
      inner join tab_finalizadora p
      on c.m02ai = p.cod_finalizadora
      where c.m00af = to_date('09/03/20','dd/mm/yy')
      and c.m00za = 3
      and c.m00ac = 9
      and c.m00ad = 379678
      group by c.m00ad,c.m00ac,c.m02ak,p.descricao,c.m02ah,f.nome,c.m02ao;
       
      A consulta me retorna o seguinte resultado:

       
      Como podem ver, repetiu o mesmo nome (operador e supervisor), sendo que o código é diferente.
       
      Isso acontece por que na tabela de funcionário o campo NOME serve para operador e supervisor e o que diferencia se é supervisor ou operador temos mais duas outras tabelas. A estrutura é assim:
       
      tab_funcionario -> temos o campo cod_funcionario e nome (todos os funcionários cadastrados são armazenados nessa tabela)
      tab_perfil -> temos os campos cod_perfil e descricao (todos os perfis cadastrados são armazenados nessa tabela)
      tab_perfil_funcionario -> temos os campos cod_funcionario e cod_perfil (tabela que relaciona as tabelas tab_funcionario e tab_perfil)
       
      A única coisa que preciso é que apareça no NOME_OP o nome do operador e não o nome do supervisor igual está aparecendo.
       
    • By Luiz Henrique
      Olá pessoas,
       
      Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados:
      Tabela ticket
      id,  id_cliente
       
      Tabela clientes
      id, nome
       
      Tabela servicos_ticket
      id, id_ticket, valor_ticket
       
      Aqui OK
      SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados.
      ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT ticket.* mas não adianta.
      o resultado deveria ser algo assim:
       
      12344 luiz 10.00
      12345 henrique 20.00
       
      mas se o ticket do luiz tiver 3 serviços cadastrados
       
      12344 luiz 10.00
      12344 luiz 10.00
      12344 luiz 10.00
      12345 henrique 20.00
       
      e deveria ser apenas 1, aí eu faria a soma dos valores
       
      12344 luiz 30.00
       
      Como elimino essa duplicação?
      Deu para entender?
      Obrigado.
    • By Luiz Henrique
      Olá pessoas,
       
      Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados:
      Tabela ticket
      id,  id_cliente
       
      Tabela clientes
      id, nome
       
      Tabela servicos_ticket
      id, id_ticket, valor_ticket
       
      Aqui OK
      SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados.
      ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT tickets.* mas não adianta.
      o resultado deveria ser algo assim:
       
      12344 luiz 10.00
      12345 henrique 20.00
       
      mas se o ticket do luiz tiver 3 serviços cadastrados
       
      12344 luiz 10.00
      12344 luiz 10.00
      12344 luiz 10.00
      12345 henrique 20.00
       
      e deveria ser apenas 1, aí eu faria a soma dos valores
       
      12344 luiz 30.00
       
      Como elimino essa duplicação?
      Deu para entender?
      Obrigado.
    • By mldiogo87
      Olá,
       
      Estou desenvolvendo um sistema de cadastro de artigos para minha esposa, algo amador, simples, mas que precisa de certa funcionalidade.
       
      Me deparei com a seguinte situação, existirá a tabela no MySQL categoria e artigos.
       
      Dentro da tabela artigos existirá a coluna categoria, que se relacionará com a tabela categorias por simples inner join .
       
      O problema é que surgiu a necessidade de um mesmo artigo pertencer a mais de uma categoria, assim estou pesquisando soluções.
       
      Por exemplo, na hora de cadastrar várias categorias em uma linha da tabela artigos, a melhor forma é eu inserir os números dos ID’S das categorias separado por vírgula e na hora de chamar a consulta utilizar o explode do php ?
       
      Existe uma maneira mais simples para a solução dessa problemática ?
       
      Obrigado!
       
       
    • By Felipe Guedes Coutinho
      Galera, venho contribuindo com diversas dúvidas, mas hoje quem está com uma dúvida sou eu.
       
      Cenário - Gerar Dados para Relatório de Faturamento.
      Objetivo - Obter os valores totais das tabelas de Compra, Venda e Despesa agrupados por mês através de SUM dentro do "periodo" passado pela tela de consulta do relatório.
      Problema - Não existe um relacionamento entre as tabelas e eu preciso obter os resultados por 1 (UM) único select pois a cada registro lido com os valores totalizados e agrupados por mês eu movimento para um array onde o resultado do array é movimentado para um Chart do Google que gera um gráfico.
       
      Insumos:
      Tabela compra

      RESULTADO SEPARADO DA TABELA COMPRA
      SELECT  sum(vlr_pago),
              CASE extract(MONTH from dt_registro_compra)
                  WHEN 1 THEN 'Janeiro'
                  WHEN 2 THEN 'Fevereiro'
                  WHEN 3 THEN 'Março'
                  WHEN 4 THEN 'Abril'
                  WHEN 5 THEN 'Maio'
                  WHEN 6 THEN 'Junho'
                  WHEN 7 THEN 'Julho'
                  WHEN 8 THEN 'Agosto'
                  WHEN 9 THEN 'Setembro'
                  WHEN 10 THEN 'Outubro'
                  WHEN 11 THEN 'Novembro'
                  WHEN 12 THEN 'Dezembro'
              END AS mes
              FROM db_pescado_gelo.sqltb_compra
              WHERE dt_registro_compra between '2019-01-01' and '2019-12-31'
      group by mes
      order by dt_registro_compra asc
       
      RESULTADO:

       
      Tabela Venda

      RESULTADO SEPARADO DA TABELA VENDA
      SELECT  sum(vlr_vale),
              CASE extract(MONTH from dt_registro_venda)
                  WHEN 1 THEN 'Janeiro'
                  WHEN 2 THEN 'Fevereiro'
                  WHEN 3 THEN 'Março'
                  WHEN 4 THEN 'Abril'
                  WHEN 5 THEN 'Maio'
                  WHEN 6 THEN 'Junho'
                  WHEN 7 THEN 'Julho'
                  WHEN 8 THEN 'Agosto'
                  WHEN 9 THEN 'Setembro'
                  WHEN 10 THEN 'Outubro'
                  WHEN 11 THEN 'Novembro'
                  WHEN 12 THEN 'Dezembro'
              END AS mes
              FROM db_pescado_gelo.sqltb_venda
              WHERE dt_registro_venda between '2019-01-01' and '2019-12-31' 
      group by mes
      order by dt_registro_venda asc
       
      RESULTADO:

       
      Tabela Despesa

      Sei que devo colocar dt_pagamento is not null
      RESULTADO SEPARADO DA TABELA DESPESA
      SELECT  sum(vlr_pago),
              CASE extract(MONTH from dt_pagamento)
                  WHEN 1 THEN 'Janeiro'
                  WHEN 2 THEN 'Fevereiro'
                  WHEN 3 THEN 'Março'
                  WHEN 4 THEN 'Abril'
                  WHEN 5 THEN 'Maio'
                  WHEN 6 THEN 'Junho'
                  WHEN 7 THEN 'Julho'
                  WHEN 8 THEN 'Agosto'
                  WHEN 9 THEN 'Setembro'
                  WHEN 10 THEN 'Outubro'
                  WHEN 11 THEN 'Novembro'
                  WHEN 12 THEN 'Dezembro'
              END AS mes
              FROM db_pescado_gelo.sqltb_despesa
              WHERE dt_pagamento between '2019-01-01' and '2019-12-31'
                AND dt_pagamento is not null
      group by mes
      order by dt_pagamento asc
       
      RESULTADO:

       
       
      O resultado que eu gostaria é algo parecido com isso:
       
      TABELA DE VENDA TABELA DE COMPRA TABELA DE DESPESA - - R$ 31.272,55 Julho - - Agosto R$ 3.796,53 R$ 20.687,20 Agosto R$ 3.796,53 Agosto  
      Esse resultado eu "preciso" que seja através do retorno do um único SELECT, se alguém puder me ajudar, ficarei muito agradecido.
       
      Se puderem dar uma forã agradeço @Motta ; @Omar~ ; @Maujor ; @gabrielms 
       
      Att.
      Felipe Coutinho
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.