Ir para conteúdo
asacap1000

transformar resultado de um select de várias linhas para uma linha

Recommended Posts

Galera salve salve a todos,

 

Estou com um problema em um select  e preciso da ajuda de vocês.

 

O select se refere a calculo de faturamentos os quais calculam os itens cobrados na NF.

Eu preciso gerar um relatório destes lançamentos e com isso criei o select  abaixo.

select bo.lager,
               bo.id_os,
               k.id_klient,
               k.suchbegriff cnpj_cpf,
               k.name,
               bi.div_1 lote,
               bi.div_10 di_dde,
               (select distinct dis.id_dispatcher
                  from fiscal.dochd dc, wms_eadi.dispatcher dis
                 where dc.dochd_doc_id = bo.nr_nf
                   and dc.dochd_rps_desp = dis.suchbegriff) cod_comissaria,
               (select distinct dis.bez
                  from fiscal.dochd dc, wms_eadi.dispatcher dis
                 where dc.dochd_doc_id = bo.nr_nf
                   and dc.dochd_rps_desp = dis.suchbegriff) comissaria,
               bo.nr_nf,
               bo.date_bill,
               bo.date_emiss,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.div_1 = bi.div_1
                   and nvl(osi.div_10, 'x') = nvl(bi.div_10, 'x')
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and wer.wert = 'ARMAZ')) vlr_armaz,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.div_1 = bi.div_1
                   and nvl(osi.div_10, 'x') = nvl(bi.div_10, 'x')
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and wer.wert = 'GER.RISCO')) vlr_ger_risco,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.div_1 = bi.div_1
                   and nvl(osi.div_10, 'x') = nvl(bi.div_10, 'x')
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and wer.wert = 'MOVIMENT')) vlr_movimentacao,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.div_1 = bi.div_1
                   and nvl(osi.div_10, 'x') = nvl(bi.div_10, 'x')
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and wer.wert = 'DESUNIT')) vlr_desunit,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.div_1 = bi.div_1
                   and nvl(osi.div_10, 'x') = nvl(bi.div_10, 'x')
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and wer.wert = 'PESAGEM')) vlr_pesagem,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.div_1 = bi.div_1
                   and nvl(osi.div_10, 'x') = nvl(bi.div_10, 'x')
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and wer.wert = 'AVERBAÇÃO')) vlr_averbacao,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and wer.wert = 'FAT.MINIMO.')) vlr_fat_minimo,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.div_1 = bi.div_1
                   and nvl(osi.div_10, 'x') = nvl(bi.div_10, 'x')
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and bll.billite not in ('21.02', '21.03')
                           and wer.wert = 'OUT.SERV.')) vlr_outros_serv,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.div_1 = bi.div_1
                   and nvl(osi.div_10, 'x') = nvl(bi.div_10, 'x')
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and bll.billite = '21.02'
                           and wer.wert = 'OUT.SERV.')) transf_in,
               (select sum(round(osi.preis, 2))
                  from bill_os_item osi
                 where osi.lager = bo.lager
                   and osi.id_klient = k.id_klient
                   and osi.id_os = bo.id_os
                   and osi.billite = bi.billite
                   and osi.div_1 = bi.div_1
                   and nvl(osi.div_10, 'x') = nvl(bi.div_10, 'x')
                   and osi.billite in
                       (select bll.billite
                          from bill_item bll, werte wer
                         where bll.tipo_fat = wer.wert
                           and wer.werte_ber = 'ITENSF'
                           and bll.billite = '21.03'
                           and wer.wert = 'OUT.SERV.')) transf_out
        
          from bill_os bo, bill_os_item bi, klienten k
         where bo.lager = bi.lager
           and bo.id_klient = bi.id_klient
           and bo.id_os = bi.id_os
           and bo.lager = k.lager
           and bo.id_klient = k.id_klient
           and bo.status = '90'
           and k.id_klient = '2464'
        --and trunc(bo.date_bill) between '$inicio' and '$fim'
         group by bo.lager,
                  bo.id_os,
                  k.id_klient,
                  k.suchbegriff,
                  k.name,
                  bo.date_emiss,
                  bo.nr_nf,
                  bo.date_bill,
                  bi.billite,
                  bi.div_1,
                  bi.div_10

Ele me traz os resultados por linhas de cada tipo de cobrança.

Segue imagem do resultado.

image.thumb.png.5548630874b10747847395f6f0768cb1.png

 

Eu preciso que os resultados viessem em apenas uma linha, estou quebrando a cabeça com isso.

o resultado tem que ser assim:

 

image.thumb.png.ee2d8248173fd8433404ec0c608e2df3.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por luizfabianochaves
      bom dia..
       
      preciso fazer o calculo do prazo medio de recebimento da minha empresa, em relação ao periodo do ano passado.
      já tenho a soma de tudo o que recebi com 30, 60, 90, 120 e mais de 120 dias.. como calcular o prazo medio do pl sql com essas informações?
    • Por mr22robot
      Estou com uma dúvida. É possível determinar um select a partir de uma escolha?
      Ex. 
      SELECT CASE WHEN a < b THEN select * from tabela1 WHEN d < e THEN select * form tabela2 END FROM tabela; Algo parecido. Se uma condição for atendida select1 , se outra condição for atendida: select2.
      O que acontece: estou com um relatorio que preciso criar no winthor e não consigo melhorar isso. Tenho de fazer três relatorios como solução. Se eu consigo implantar isso, eu faria somente um relatorio. 
      Tipo se marcar um campo, sai um relatorio. Se marcar outro, saí outro relatorio.
    • Por GabrielB3r
      Bom dia,
      estou tentando criar um sistema de empréstimo e devolução de documentos.
      Funciona da seguinte forma:
      A pessoa tem o opção de cadastrar novos documentos,os quais são inseridos da tabela "dossie_cadastrado", e ela pode cadastrar o empréstimo e a devolução do mesmo que ficam salvos na tabela "dossie_emprestimo".
      A parte de cadastro e empréstimo consegui fazer funcionar, meu problema é na hora de cadastrar a devolução. Preciso inserir a data atual no último cadastro de um determinado dossie na tabela "dossie_emprestimo".
       
      Tenho o seguinte código:
      if(isset($_POST["cod_cad"])){         $cod_cad = $_POST["cod_cad"];         }          if(isset($_GET["cod_cad"])){         $cod_cad = $_GET["cod_cad"];     } $cod_cad = strip_tags($_POST['cod_cad']); $select_upd= mysqli_query($conexao_bd,"SELECT id_emp, data_emp from dossie_emprestimo where cod_cad='$cod_cad' ORDER BY data_emp desc limit 1") ; $sql_update="UPDATE dossie_emprestimo SET data_dev=CURDATE() WHERE id_emp='$id_emp'"; mysqli_query($conexao_bd, $sql_update);  
      quando eu rodo esse código separado no phpmyadmin, funciona normalmente, mas quando coloco no meu código ele não encontra o id_emp.
      id_emp - id de empréstimo, chave primaria com auto incremento.
      data_emp - data que foi realizado o empréstimo.
      cod_cad - código de cadastro, é o código que esta relacionado a tabela de cadastro, é o id do documento. ex: toda vez que o documento "20" for emprestado esse código sera "20".
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.