Jump to content

ronimarcos.silva

Members
  • Content count

    11
  • Joined

  • Last visited

Community Reputation

0 Comum

About ronimarcos.silva

Contato

  1. ronimarcos.silva

    Insert Into com Múltiplas Línhas - Oracle

    Alguém sabe me informar?
  2. Estou com a seguinte situação: No Mysql eu consegui fazer em "insert into" de uma única vez, com vários registros, conforme abaixo: insert into prefeitos (nome, cidade_id) VALUES ('Rodrigo Neves', 2), ('Caique Rosa Baldran', 9), ('Raquel Lira', 11), ('Maísa Albuquerque Sain', 12), ('Zenaldo Coutinho', null); Porém, no Oracle 12C, usando a mesma forma que no Mysql, está dando o seguinte erro: insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '279', 'U', '5', '0', '0', '1360', '13730', '100', '31058', '100'), ('800', 'S0001', '280', 'U', '5', '0', '0', '1360', '13730', '100', '31060', '100'), ('800', 'S0001', '281', 'U', '5', '0', '0', '1360', '13730', '100', '31202', '100'), ('800', 'S0001', '282', 'U', '5', '0', '0', '1360', '13730', '100', '31203', '100'); ORA-00933: comando SQL não encerrado adequadamente Será que a sintaxe no Oracle é diferente? Eu sei que assim funciona perfeitamente: insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '279', 'U', '5', '0', '0', '1360', '13730', '100', '31058', '100'); insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '280', 'U', '5', '0', '0', '1360', '13730', '100', '31060', '100'); insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '281', 'U', '5', '0', '0', '1360', '13730', '100', '31202', '100'); insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '282', 'U', '5', '0', '0', '1360', '13730', '100', '31203', '100'); Porém, eu tenho uma tabela com quase 100.000 registros e gostaria de fazer em um único "insert". Eu uso o PL/SQLDeveloper e quando faço o "insert" da forma acima, com vários "insert into", ele abre um novo documento para cada "insert into", nisso ele trava, fica horas rodando o "insert" e não conclui se for em um único "insert" como no Mysql, creio que não pesaria tanto. Tem uma forma mais fácil de fazer o "insert into" com muitos dados envolvidos? Desde já agradeço.
  3. ronimarcos.silva

    Usar Case com IN e NOT IN no Oracle

    Não sei se tenho que abrir outro tópico, mas veja o que ocorre: No meu query, se coloco um campo assim ele funciona normalmente: (case when gope.cd_grp_operat in (1, 3, 45) then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) else 0 end)f_km_inicial Mas se coloco o outro campo, dá o erro: ORA-01427: a subconsulta de uma única linha retorna mais de uma linha: (case when gope.cd_grp_operat in (1, 3, 45) then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) else 0 end)f_km_inicial, --38 (case when gope.cd_grp_operat not in (1, 3, 45) then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) else 0 end) f_horimetro_inicial --39
  4. ronimarcos.silva

    Usar Case com IN e NOT IN no Oracle

    Obrigado Motta, tão simples e eu dificultando, Deus abençoe.
  5. ronimarcos.silva

    Usar Case com IN e NOT IN no Oracle

    Como faço para usar o Case com o "In", por exemplo no caso abaixo? (case gope.cd_grp_operat when 1 then 1 when 3 then 1 when 15 then 1 when 25 then 1 when 35 then 1 when 45 then 1 when 55 then 1 else 99 end ) ib_controla_km, -- Eu posso fazer asism? (case gope.cd_grp_operat when in (1, 3, 15, 25, 35, 45, 55) else 99 end ) ib_controla_km, Ou assim, aninhando o (1, 3, 45) dentro de um "IN": (case gope.cd_grp_operat when gope.cd_grp_operat = 1 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) when 2 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) when 45 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) )else 0 end)f_km_inicial,
  6. ronimarcos.silva

    Totalizando colunas - Débito/Crédito

    Obrigado Motta. Estou de licença, por isso não pude testar, mas creio que seja isso. Obrigado.
  7. ronimarcos.silva

    Totalizando colunas - Débito/Crédito

    Obrigado pela resposta Motta. O meu está dando erro ORA-01790: A expressão deve ter o mesmo tupo de dados da expressão correspondente. Deve ser formatação, vou ver se acho a solução. Obrigado.
  8. ronimarcos.silva

    Totalizando colunas - Débito/Crédito

    Na conta de crédito e débito, vem o código da conta no plano de contas, tipo: água, luz, telefone, Receitas com vendas, etc. Para cada conta dessas, eu tenho o valor em R$ referente a essa movimentação na coluna total. As duas contas compartilham o campo total como campo de seus valores em reais. Esses valores não veem com valor negativo para conta de débito, tipo, com o sinal de menos na frente (-). Eles vem todos juntos, não tem um campo/flag que informa se a conta é de débito ou crédito, somente pelo próprio campo. Estou tentando uma forma de totalizar os valores de débito e/ou valores de crédito, pois da forma como foi arquitetado ficou muito ruim para de descobrir, ao menos no meu pensamento. Anexei uma imagem para explicar melhor, desde já agradeço.
  9. ronimarcos.silva

    Totalizando colunas - Débito/Crédito

    Obrigado pela resposta. As colunas CtaDeb e CtaCre, não são introduzidos valores monetários e sim o código da conta reduzida de débito e de crédito, os valores são somente na coluna VlrMov. Não sei se entendeu.
  10. ronimarcos.silva

    Totalizando colunas - Débito/Crédito

    Quando aparece preenchido conta de débito e crédito no mesmo registro, vai o mesmo valor para ambos, então resumindo, neste caso somar os valores da coluna de débito e a de crédito, tipo: Total Vlr Débito -- Vlr Total Crédito
  11. ronimarcos.silva

    Totalizando colunas - Débito/Crédito

    Olá pessoal, preciso de uma ajuda de vocês. Não tenho muita experiência em SQL, creio que para vocês será fácil. Estou usando o banco de dados Oracle 12C. Supondo que tenho em meu banco 3 colunas, uma de conta de Débito, onde nesta coluna vai o código da conta de débito, uma de conta de Crédito, onde nesta coluna vai o código da conta de Crédito e uma de valor, que é informado o valor de cada lançamento a débito ou a crédito. Quando o lançamento for a débito, o valor da conta de crédito é igual a Zero (0) e inverso quando o lançamento for a débito, ou seja, se uma conta está preenchida é porque a outra não tem lançamento. Até aí tudo bém, posso totalizar o valor por cada conta de débito ou de crédito. Mas como faço se eu querer saber o total da conta de débito e o total da conta de crédito? Veja abaixo um exemplo: Select E640LCT.CtaDeb, E640LCT.CtaCre, sum(E210MVP.VLRMOV) as total from E210Mvp, E644Les, E640Lct where E644Les.CodEmp = E640Lct.CodEmp and E644Les.NumLct = E640Lct.NumLct and E644Les.CodEmp = E210Mvp.CodEmp and E644Les.CodPro = E210Mvp.CodPro and E644Les.CodDer = E210Mvp.CodDer and E644Les.CodDep = E210Mvp.CodDep and E644Les.DatMov = E210Mvp.DatMov and E644Les.SeqMov = E210Mvp.SeqMov and E210Mvp.CodEmp = 100 and E210Mvp.CodFil = 3 and E640LCT.OriLct = 'EST' and E640LCT.DatLct between '01/07/2019' and '31/07/2019' group by E640LCT.CtaDeb, E640LCT.CtaCre
×

Important Information

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