Jump to content
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

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 RX3Info
      Boa Tarde!
      Pessoal,
      Estou precisando realizar um cálculo dentro de uma select, mas não estou conseguindo, segue abaixo a select sem as operações e um exemplo (que não funcionou) logo abaixo:
       
      Este código está funcionando:
      select A.CODPRODUTO, A.LOTE, A.QTD, A.`LOCAL`, A.OT, A.ALTUSU, A.ALTMOM, B.CODPRODUTO, B.DESCRICAO, B.CUSTO, C.ICMS_VALOR, C.IPI_VALOR, C.COFINS_VALOR, C.QTD from proqtd as A inner join produto as B on a.CODPRODUTO = B.CODPRODUTO inner join nfeprodu as C on B.CODPRODUTO = C.PRODUTO  
      Este não funciona e da erro devido ao cálculo.
      select A.CODPRODUTO, A.LOTE, A.QTD, A.`LOCAL`, A.OT, A.ALTUSU, A.ALTMOM, B.CODPRODUTO, B.DESCRICAO, (B.CUSTO, - C.ICMS_VALOR, - C.IPI_VALOR, - C.COFINS_VALOR, / C.QTD) as CustoSemImpostos from proqtd as A inner join produto as B on a.CODPRODUTO = B.CODPRODUTO inner join nfeprodu as C on B.CODPRODUTO = C.PRODUTO  
      O que eu preciso é o seguinte, que me traga os itens com os valores sem os impostos, veja acima que a tentativa está sendo de pegar o valor de custo de um item, subtrair os impostos e dividir pela quantidade em estoque, desta forma, tenho o valor da unidade de cada item sem os impostos, mas não estou conseguindo.
       
      Se alguém puder me ajudar com um exemplo, ficarei muito agradecido.
      Obrigado!
       
    • By iguulima
      É possivel realizar uma consulta SQL em duas colunas da mesma tabela usando outra função que não seja o AND ou OR? Segue o meu Select ate agora:
       
      (SELECT * FROM product WHERE comid = $idcom AND status = 'Ativo' AND categ = $category AND nameprod like'%$search%'  ORDER BY id DESC)  
      Por exemplo se eu colocar um AND após buscar o nameprod, no nome do produto não tiver a palavra chave ele também não irá buscar. Ou se colocar um OR ele anulo as outras condições até onde eu sei.
      Iniciante em programação.
    • By lezão
      Boa noite!
      Td bem com vcs?
      Estou usando esse código mas não retorna nada!
       
      Alguém pode me ajudar ?
       
       
      <?php $sql = mysqli_query($link, "SELECT ver_post, COUNT(ver_post) AS Quantidade FROM tab_comentarios where ver_post = 'red' Group by ver_post"); ?> Variável
      <?php echo $Quantidade; ?>  
    • By MarcosAntonio
      Boa tarde !
      estou carregando um arquivo texto numa variável BLOB e preciso manipular em loop, para ler linha a linha e aplicar os SUBSTRs para inserir no banco, mas não sei como fazer o loop, a interação entre as linhas e quando saber o momento de sair do loop, alguém pode me ajudar?

      ex do conteúdo do BLOB:
       
      2AAA02012021123421
      2AAA02012021213453
      2AAA02012021105413
       
      quero por exemplo retirar a informação da linha 2 a partir do quarto caracter e parando no decimo segundo caracteres
    • By Motta
      Oracle is moving its headquarters from Silicon Valley to Austin, Texas
×

Important Information

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