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 lesilva
      Bom pessoa estou fazendo um limpa em um banco de dados e tenho que deixar somente alguns cadastro, consegui fazer a consulta para achar somente os que estou querendo, só que não consegui fazer o oposto de trazer os que não são esse.
       
      O problema é que no meu cadastro tem a aba parte que contem vários nomes inclusive o que to querendo '42229-0000000460' por isso o <> não funciona, segue a consulta que é a que contem ele.
      SELECT * FROM PROCESSO PR inner JOIN PARTICIPACAO PA ON PR.OID = PA.PROCESSO WHERE Pa.parte = '42229-0000000460'  
       
      E depois queria saber como faça para deletar os registro que não seja o dele '42229-0000000460'.
    • By Kliemann
      Opa pessoal, peço desculpas se a pergunta for tosca, ou o código não ter sentido.
       
      Estou começando no PHP e estou com uma duvida de um menu de select.
       
       
      Segue o código.
      <select name="setor"> <?php $link = new mysqli('localhost','root','','db_chamados'); $result_setor= "SELECT id_setor,nome_setor FROM tb_setores"; $resultado_setor = mysqli_query($conn,$result_setor); while($row_setores = mysqli_fetch_assoc($resultado_setor)) ?> <option value="<?php echo $row_setores['id_setor']; ?>"> <?php echo $row_setores['nome_setor']; ?> </option> ?> </select> Alguem consegue me ajudar sobre? ele abre a janela mas não puxa os dados do meu banco.
    • By phtisp
      Criei este exemplo para teste.
      Preciso fazer o seguinte select:
       
      Preciso que ele faça uma validação do campo Nota, caso seja > 5 retone = APROVADO 
      caso seja = 5 REFORÇO
      caso seja < 5 REPROVADO
    • By Viniciusr9
      Estou com um problema com esse esse script abaixo: 
      tenho um checkbox na minha página ( não em relatório, na página mesmo, um item de página) e gostaria que o mesmo ao ser clicado e pressionado um botão submit realizasse o procedimento do script, porém ele faz o processo mas não me retorna nada. acredito que o problema seja no LOOP do APEX_APPLICATION.G_F01 . Alguém consegue me ajudar com isso?
      DECLARE V_DS_COLAB VARCHAR2(50); BEGIN APEX_DEBUG.MESSAGE('CHECK:'|| vCHECK); FOR A IN 1 .. APEX_APPLICATION.G_F01.COUNT LOOP BEGIN SELECT C.DS_COLABORADOR INTO V_DS_COLAB FROM COLABORADOR C WHERE C.USER_APEX = V('APP_USER') ; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(-20001,'NENHUM REGISTRO ENCONTRADO!'); WHEN TOO_MANY_ROWS THEN RAISE_APPLICATION_ERROR(-20002,'MAIS QUE UM REGISTRO ENCONTRADO!'); WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20003,'ERRO NAO PREVISTO' || SQLERRM) ; END; :P12_SUPER := (V_DS_COLAB || ' - ' || TO_CHAR(SYSDATE,'DD/MM/RRRR HH24:MI')); UPDATE COMPETENCIA_COLABORADOR CC SET FINALIZADO_SN = 'S' WHERE CC.CD_EQUIPE = :P12_EQUIPE AND CC.CD_COMPETENCIA = (SELECT C.CD_COMPETENCIA FROM COMPETENCIA C WHERE TO_DATE(LPAD(C.MES_COMPETENCIA,2,'0') || '/' || C.ANO_COMPETENCIA,'MM/RRRR') = TO_DATE(:P12_COMPETENCIA,'MM/RRRR')); END LOOP; END;  
    • By Motta
      Estou tentando mandar uma "Blind Copy" pelo nossa Procedure de envio de email , pela documentação estaria ok , mas não está enviando nem gerando qualquer erro , o código está abaixo , os itens sensíveis foram trocados por "x"
      O que posso estar fazendo de errado ?
      SP :
       
      create or replace PROCEDURE ENVIA_EMAIL_CLOBHBC (ds_email_origem_w varchar2, ds_email_destino_p varchar2, ds_assunto varchar2, p_attach_clob IN CLOB DEFAULT NULL, p_httm in varchar2 default 'S', p_log out varchar2, p_nome_destino in varchar2 default null) is l_step PLS_INTEGER := 12000; ds_smtp_w varchar2(20) := 'xx.xx.x.xx'; /* Abre conex?o SMTP e HTTP */ CONEXAO UTL_SMTP.CONNECTION; vs_origem varchar2(100) := ds_email_origem_w; -- vs_para varchar2(100); vs_cc varchar2(100); -- PROCEDURE send_header(name IN VARCHAR2, header IN VARCHAR2) AS BEGIN UTL_SMTP.WRITE_DATA(CONEXAO, name || ': ' || header || UTL_TCP.CRLF); END; BEGIN /* Abre conex?o com um Servidor SMTP(Simple Mail Transfer Protocol), porta padr?o SMTP e 25 */ CONEXAO := utl_smtp.open_connection (ds_smtp_w,25); UTL_SMTP.HELO (CONEXAO, ds_smtp_w); /* Endereco do servidor de SMTP */ --utl_smtp.command (CONEXAO, 'AUTH LOGIN'); --utl_smtp.command (CONEXAO, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw((ds_user_id_w))))); --UTL_SMTP.COMMAND (CONEXAO, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW((DS_SENHA_SMTP_W))))); UTL_SMTP.MAIL (CONEXAO, ('<' || vs_origem || '>')); /* E-mail de quem esta mandando */ -- se estiver em lista separado por ";" manda para o 1º como "para" e para o 2º como CC (copia) /* Para quem vou mandar */ IF INSTR(ds_email_destino_p,';') = 0 THEN vs_para := ds_email_destino_p; UTL_SMTP.RCPT (CONEXAO, ('<' || ds_email_destino_p || '>')); /* Para quem vou mandar */ ELSE vs_para := SUBSTR(ds_email_destino_p,1,INSTR(ds_email_destino_p,';')-1); vs_cc := SUBSTR(ds_email_destino_p,INSTR(ds_email_destino_p,';')+1,length(ds_email_destino_p)); UTL_SMTP.RCPT (CONEXAO, ('<' || vs_para || '>')); /* Para quem vou mandar original */ UTL_SMTP.RCPT (CONEXAO, ('<' || vs_cc || '>')); /* Para quem vou mandar copia */ END IF; UTL_SMTP.OPEN_DATA(CONEXAO); If upper(p_httm) <> 'S' Then send_header('Subject','=?iso-8859-1?Q?' ||UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(ds_assunto)))); Else --send_header('Subject','=?iso-8859-1?Q?' ||UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(ds_assunto)))|| '?='); send_header('Subject',UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(ds_assunto)))); end if; If upper(p_httm) <> 'S' Then UTL_SMTP.write_data(CONEXAO, 'Content-Type: text/html; charset="UTF-8"' || utl_tcp.CRLF); Else UTL_SMTP.write_data(CONEXAO, 'Content-Type: text/html; charset="UTF-8"' || utl_tcp.CRLF ); end if; send_header('From',ds_email_origem_w); --se denominou o destino formata o envio , senão vai o proprio email --tratamento diferente do "from" pois este é em geral dinamico --feito pela stored procedure chamadora if trim(p_nome_destino) is null then send_header('To',vs_para); else send_header('To','"'||trim(p_nome_destino)||'" <'||vs_para||'>'); end if; If Trim(vs_cc) is not null Then--copia (nao formata o destino) send_header('CC',vs_cc); end if; send_header('BCC',vs_origem);---<<< A LINHA COM PROBLEMA PARECE SER ESTA *********************** FOR i IN 0 .. TRUNC((DBMS_LOB.getlength(p_attach_clob) - 1 )/l_step) LOOP UTL_SMTP.WRITE_DATA(CONEXAO, DBMS_LOB.substr(p_attach_clob, l_step, i * l_step + 1)); END LOOP; UTL_SMTP.CLOSE_DATA(CONEXAO); UTL_SMTP.QUIT (CONEXAO); Exception when OTHERS then utl_smtp.quit (conexao); p_log := 'Erro: ' || SQLERRM; END ENVIA_EMAIL_CLOBHBC;
×

Important Information

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