Re: [oracle_br] Ajuda - SQL
Desculpe: *INSTR é o caminho, rsrs. []'s Em 7 de abril de 2016 19:24, Gustavo Guedes escreveu: > Diego, tudo bem? > > Já fiz isso usando a função INSTR do PL/SQL. > Era algo que combinava as funções INSTR SUBSTR e REPLACE > Não tenho o exemplo aqui agora, mas a dinâmica é algo do tipo: > > Com o INSTR vc consegue obter a posição da ocorrência do "||" (duplo > pipe). No seu caso, retornaria 33, se não me engano. Daí, com o REPLACE e o > SUBSTR, vc consegue substituir os caracteres das posições 33 e 34 (||) por > um NULL, por exemplo. > Dê uma olhada na função REGEXP_INSTR tb. Ela pode ajudar. > > Abraços, e desculpe por não postar um exemplo aqui agora. Mas SUBSTR é o > caminho, rs. > > []'s > > Em 7 de abril de 2016 16:24, Diego Melo diegopm...@gmail.com [oracle_br] < > oracle_br@yahoogrupos.com.br> escreveu: > >> >> >> @Emerson, >> >> a sua função deu certo. Muito obrigado. >> >> @Angelo, >> quiando vem vazio, deve ficar null mesmo, o CPF foi só um exemplo que me >> veio na cabeça, mas são outros campos na verdade, que tem que vir vazio ou >> null mesmo. >> >> Valeu >> >> 2016-04-07 16:12 GMT-03:00 angelo angelolis...@gmail.com [oracle_br] < >> oracle_br@yahoogrupos.com.br>: >> >>> >>> >>> Boa tarde, Diego, >>> >>> Será que ao invés de dar ruim na parada, não deu bom não? >>> >>> Pois não ficou claro sobre o que deveria acontecer no caso em que não >>> vier o cpf na string. >>> >>> To entendendo que se nao veio nada, entraria vazio mesmo, melhor, os >>> pipes. >>> Você está importando isso de algum arquivo edi ? Campo cpf veio vazio, >>> o que entraria no lugar ? ou tinha cpf e nao inseriu ? >>> >>> >>> 99|152|LUCIANA XIMENES SILVA|o que fazer quando aqui for vazio? |BRA|0|| >>> >>> >>> >>> >>> >>> 2016-04-07 15:57 GMT-03:00 Diego Melo diegopm...@gmail.com [oracle_br] < >>> oracle_br@yahoogrupos.com.br>: >>> Olá galera, tudo bem ? Por gentileza, poderiam me ajudar em um SQL. Minha versão do Oracle é: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi PL/SQL Release 10.2.0.5.0 - Production "CORE 10.2.0.5.0 Production" TNS for Linux: Version 10.2.0.5.0 - Production Tenho uma tabela com uma string e diversos campos separados por | (pipe) Preciso trazer cada campo em uma coluna. Eu até consegui uma maneira, o problema é que quando um registro não tem o campo preenchido e a string traz ||, ai da ruim na minha solução. Detalhe, eu não posso atlerar a string original Alguém teria uma solução em Oracle SQL ?? Fiz do seguinte modo: CREATE TABLE t_1 ( strings varchar2(4000)); /INSERT INTO t_1VALUES ('99|151|JOANA PRADO |08227525490|BRA|0||'); INSERT INTO t_1VALUES ('99|152|LUCIANA XIMENES SILVA||BRA|0||'); INSERT INTO t_1VALUES ('99|153|JULIA ROBERTS|44303539805|USA|0||'); COMMIT; SELECT regexp_substr(strings,'[^|]+',1,1) identificador, regexp_substr(strings,'[^|]+',1,2) id, regexp_substr(strings,'[^|]+',1,3) nome, regexp_substr(strings,'[^|]+',1,4) cpf, regexp_substr(strings,'[^|]+',1,5) pais, regexp_substr(strings,'[^|]+',1,6) tipoFROM t_1 Reparem que o registro id 152 não tem cpf e ai o campo de pais acaba ocupando o espaço do CPF. Grato. Diego >>> >> >> > > > > -- > Atenciosamente, > *Gustavo Guedes de Sene* > -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] Ajuda - SQL
Diego, tudo bem? Já fiz isso usando a função INSTR do PL/SQL. Era algo que combinava as funções INSTR SUBSTR e REPLACE Não tenho o exemplo aqui agora, mas a dinâmica é algo do tipo: Com o INSTR vc consegue obter a posição da ocorrência do "||" (duplo pipe). No seu caso, retornaria 33, se não me engano. Daí, com o REPLACE e o SUBSTR, vc consegue substituir os caracteres das posições 33 e 34 (||) por um NULL, por exemplo. Dê uma olhada na função REGEXP_INSTR tb. Ela pode ajudar. Abraços, e desculpe por não postar um exemplo aqui agora. Mas SUBSTR é o caminho, rs. []'s Em 7 de abril de 2016 16:24, Diego Melo diegopm...@gmail.com [oracle_br] < oracle_br@yahoogrupos.com.br> escreveu: > > > @Emerson, > > a sua função deu certo. Muito obrigado. > > @Angelo, > quiando vem vazio, deve ficar null mesmo, o CPF foi só um exemplo que me > veio na cabeça, mas são outros campos na verdade, que tem que vir vazio ou > null mesmo. > > Valeu > > 2016-04-07 16:12 GMT-03:00 angelo angelolis...@gmail.com [oracle_br] < > oracle_br@yahoogrupos.com.br>: > >> >> >> Boa tarde, Diego, >> >> Será que ao invés de dar ruim na parada, não deu bom não? >> >> Pois não ficou claro sobre o que deveria acontecer no caso em que não >> vier o cpf na string. >> >> To entendendo que se nao veio nada, entraria vazio mesmo, melhor, os >> pipes. >> Você está importando isso de algum arquivo edi ? Campo cpf veio vazio, o >> que entraria no lugar ? ou tinha cpf e nao inseriu ? >> >> >> 99|152|LUCIANA XIMENES SILVA|o que fazer quando aqui for vazio? |BRA|0|| >> >> >> >> >> >> 2016-04-07 15:57 GMT-03:00 Diego Melo diegopm...@gmail.com [oracle_br] < >> oracle_br@yahoogrupos.com.br>: >> >>> >>> >>> Olá galera, tudo bem ? >>> >>> Por gentileza, poderiam me ajudar em um SQL. >>> >>> Minha versão do Oracle é: >>> >>> Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi >>> PL/SQL Release 10.2.0.5.0 - Production >>> "CORE 10.2.0.5.0 Production" >>> TNS for Linux: Version 10.2.0.5.0 - Production >>> >>> Tenho uma tabela com uma string e diversos campos separados por | (pipe) >>> >>> Preciso trazer cada campo em uma coluna. Eu até consegui uma maneira, o >>> problema é que quando um registro não tem o campo preenchido e a string >>> traz ||, ai da ruim na minha solução. Detalhe, eu não posso atlerar a >>> string original >>> >>> Alguém teria uma solução em Oracle SQL ?? >>> >>> Fiz do seguinte modo: >>> >>> >>> CREATE TABLE t_1 ( strings varchar2(4000)); >>> /INSERT INTO t_1VALUES ('99|151|JOANA PRADO |08227525490|BRA|0||'); >>> INSERT INTO t_1VALUES ('99|152|LUCIANA XIMENES SILVA||BRA|0||'); >>> INSERT INTO t_1VALUES ('99|153|JULIA ROBERTS|44303539805|USA|0||'); >>> COMMIT; >>> SELECT regexp_substr(strings,'[^|]+',1,1) identificador, >>>regexp_substr(strings,'[^|]+',1,2) id, >>>regexp_substr(strings,'[^|]+',1,3) nome, >>>regexp_substr(strings,'[^|]+',1,4) cpf, >>>regexp_substr(strings,'[^|]+',1,5) pais, >>>regexp_substr(strings,'[^|]+',1,6) tipoFROM t_1 >>> >>> >>> >>> Reparem que o registro id 152 não tem cpf e ai o campo de pais acaba >>> ocupando o espaço do CPF. >>> >>> Grato. >>> >>> Diego >>> >>> >>> >>> >> > > -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] Ajuda - SQL
Boa Tarde Diego, Tenho uma função que faz a busca de parte de uma string que pode te ajudar. segue abaixo, o link: http://blog.gaudencio.net.br/2015/11/oracle-funcao-para-retornar-partes-de.html Em 7 de abril de 2016 14:57, Diego Melo diegopm...@gmail.com [oracle_br] < oracle_br@yahoogrupos.com.br> escreveu: > > > Olá galera, tudo bem ? > > Por gentileza, poderiam me ajudar em um SQL. > > Minha versão do Oracle é: > > Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi > PL/SQL Release 10.2.0.5.0 - Production > "CORE 10.2.0.5.0 Production" > TNS for Linux: Version 10.2.0.5.0 - Production > > Tenho uma tabela com uma string e diversos campos separados por | (pipe) > > Preciso trazer cada campo em uma coluna. Eu até consegui uma maneira, o > problema é que quando um registro não tem o campo preenchido e a string > traz ||, ai da ruim na minha solução. Detalhe, eu não posso atlerar a > string original > > Alguém teria uma solução em Oracle SQL ?? > > Fiz do seguinte modo: > > > CREATE TABLE t_1 ( strings varchar2(4000)); > /INSERT INTO t_1VALUES ('99|151|JOANA PRADO |08227525490|BRA|0||'); > INSERT INTO t_1VALUES ('99|152|LUCIANA XIMENES SILVA||BRA|0||'); > INSERT INTO t_1VALUES ('99|153|JULIA ROBERTS|44303539805|USA|0||'); > COMMIT; > SELECT regexp_substr(strings,'[^|]+',1,1) identificador, >regexp_substr(strings,'[^|]+',1,2) id, >regexp_substr(strings,'[^|]+',1,3) nome, >regexp_substr(strings,'[^|]+',1,4) cpf, >regexp_substr(strings,'[^|]+',1,5) pais, >regexp_substr(strings,'[^|]+',1,6) tipoFROM t_1 > > > > Reparem que o registro id 152 não tem cpf e ai o campo de pais acaba > ocupando o espaço do CPF. > > Grato. > > Diego > > > > >
Re: [oracle_br] Ajuda - SQL
@Emerson, a sua função deu certo. Muito obrigado. @Angelo, quiando vem vazio, deve ficar null mesmo, o CPF foi só um exemplo que me veio na cabeça, mas são outros campos na verdade, que tem que vir vazio ou null mesmo. Valeu 2016-04-07 16:12 GMT-03:00 angelo angelolis...@gmail.com [oracle_br] < oracle_br@yahoogrupos.com.br>: > > > Boa tarde, Diego, > > Será que ao invés de dar ruim na parada, não deu bom não? > > Pois não ficou claro sobre o que deveria acontecer no caso em que não vier > o cpf na string. > > To entendendo que se nao veio nada, entraria vazio mesmo, melhor, os pipes. > Você está importando isso de algum arquivo edi ? Campo cpf veio vazio, o > que entraria no lugar ? ou tinha cpf e nao inseriu ? > > > 99|152|LUCIANA XIMENES SILVA|o que fazer quando aqui for vazio? |BRA|0|| > > > > > > 2016-04-07 15:57 GMT-03:00 Diego Melo diegopm...@gmail.com [oracle_br] < > oracle_br@yahoogrupos.com.br>: > >> >> >> Olá galera, tudo bem ? >> >> Por gentileza, poderiam me ajudar em um SQL. >> >> Minha versão do Oracle é: >> >> Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi >> PL/SQL Release 10.2.0.5.0 - Production >> "CORE 10.2.0.5.0 Production" >> TNS for Linux: Version 10.2.0.5.0 - Production >> >> Tenho uma tabela com uma string e diversos campos separados por | (pipe) >> >> Preciso trazer cada campo em uma coluna. Eu até consegui uma maneira, o >> problema é que quando um registro não tem o campo preenchido e a string >> traz ||, ai da ruim na minha solução. Detalhe, eu não posso atlerar a >> string original >> >> Alguém teria uma solução em Oracle SQL ?? >> >> Fiz do seguinte modo: >> >> >> CREATE TABLE t_1 ( strings varchar2(4000)); >> /INSERT INTO t_1VALUES ('99|151|JOANA PRADO |08227525490|BRA|0||'); >> INSERT INTO t_1VALUES ('99|152|LUCIANA XIMENES SILVA||BRA|0||'); >> INSERT INTO t_1VALUES ('99|153|JULIA ROBERTS|44303539805|USA|0||'); >> COMMIT; >> SELECT regexp_substr(strings,'[^|]+',1,1) identificador, >>regexp_substr(strings,'[^|]+',1,2) id, >>regexp_substr(strings,'[^|]+',1,3) nome, >>regexp_substr(strings,'[^|]+',1,4) cpf, >>regexp_substr(strings,'[^|]+',1,5) pais, >>regexp_substr(strings,'[^|]+',1,6) tipoFROM t_1 >> >> >> >> Reparem que o registro id 152 não tem cpf e ai o campo de pais acaba >> ocupando o espaço do CPF. >> >> Grato. >> >> Diego >> >> >> >> > >
Re: [oracle_br] Ajuda - SQL
Boa tarde, Diego, Será que ao invés de dar ruim na parada, não deu bom não? Pois não ficou claro sobre o que deveria acontecer no caso em que não vier o cpf na string. To entendendo que se nao veio nada, entraria vazio mesmo, melhor, os pipes. Você está importando isso de algum arquivo edi ? Campo cpf veio vazio, o que entraria no lugar ? ou tinha cpf e nao inseriu ? 99|152|LUCIANA XIMENES SILVA|o que fazer quando aqui for vazio? |BRA|0|| 2016-04-07 15:57 GMT-03:00 Diego Melo diegopm...@gmail.com [oracle_br] < oracle_br@yahoogrupos.com.br>: > > > Olá galera, tudo bem ? > > Por gentileza, poderiam me ajudar em um SQL. > > Minha versão do Oracle é: > > Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi > PL/SQL Release 10.2.0.5.0 - Production > "CORE 10.2.0.5.0 Production" > TNS for Linux: Version 10.2.0.5.0 - Production > > Tenho uma tabela com uma string e diversos campos separados por | (pipe) > > Preciso trazer cada campo em uma coluna. Eu até consegui uma maneira, o > problema é que quando um registro não tem o campo preenchido e a string > traz ||, ai da ruim na minha solução. Detalhe, eu não posso atlerar a > string original > > Alguém teria uma solução em Oracle SQL ?? > > Fiz do seguinte modo: > > > CREATE TABLE t_1 ( strings varchar2(4000)); > /INSERT INTO t_1VALUES ('99|151|JOANA PRADO |08227525490|BRA|0||'); > INSERT INTO t_1VALUES ('99|152|LUCIANA XIMENES SILVA||BRA|0||'); > INSERT INTO t_1VALUES ('99|153|JULIA ROBERTS|44303539805|USA|0||'); > COMMIT; > SELECT regexp_substr(strings,'[^|]+',1,1) identificador, >regexp_substr(strings,'[^|]+',1,2) id, >regexp_substr(strings,'[^|]+',1,3) nome, >regexp_substr(strings,'[^|]+',1,4) cpf, >regexp_substr(strings,'[^|]+',1,5) pais, >regexp_substr(strings,'[^|]+',1,6) tipoFROM t_1 > > > > Reparem que o registro id 152 não tem cpf e ai o campo de pais acaba > ocupando o espaço do CPF. > > Grato. > > Diego > > > > >
RE: [oracle_br] Ajuda sql
Valeu chiappa vai me ajudar no desenvolvimento do relatorioattPaulo To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Tue, 14 Jan 2014 08:19:30 -0800 Subject: RE: [oracle_br] Ajuda sql Ent���ão : O fato de ser SAP ou n���ão , e de ser gerenciado por outrem, absolutamente ** n���ão ** tem a ver com a montagem de um caso-teste : o que a gente quer ���é que vc, no seu banco de teste, seu, particular, aonde vc pode tudo, fa���ça uns CREATE TABLEs e uns INSERTs com dados ** equivalentes ** , apenas para podermos tentar reproduzir a t���écnica, a necessidade, sim ?? INVENTE os nomes das colunas, as constraints, os dados em si, bastando que sejam Equivalentes, ie, que sejam o mais parecidos poss���ível com o que vc tem na prod do SAP, sim Isso para vc poder adaptar a solu���ção encontrada l���á no ambiente real, sim ?? E veja que eu insisti nos RELACIONAMENTOS : isso ���é cr���ítico para vc Evitar ler dados que n���ão se relacionam... Por exemplo, assumindo que os nomes das tabelas e das colunas fossem como os abaixo, que exista uma coluna com data/hora E QUE realmente o codigo do cliente se repete nas 3 tabelas e ���é o mesmo, com mesmo datatype, etc, digamos que fa���çamos algo + ou - tipo : SELECT CLI.CODIGO_CLIENTE, CLI.NOME_CLIENTE, PED.NUMERO_PEDIDO, PED.DATA_PEDIDO, FAT.FUNCIONARIO FROM CLIENTE CLI, PEDIDO PED, FATURAMENTO FAT WHERE CLI.CODIGO_CLIENTE = PED.CODIGO_CLIENTE AND CLI.CODIGO_CLIENTE = FAT.CODIGO_CLIENTE AND PED.DATA_PEDIDO BETWEEN TO_DATE('01/12/2013 00:00:00', 'DD/MM/ HH24:MI:SS') AND TO_DATE('31/12/2013 23:59:59', 'DD/MM/ HH24:MI:SS') ORDER BY CLI.CODIGO_CLIENTE, PED.DATA_PEDIDO, PED.NUMERO_PEDIDO; vai funcionar ?? DEPENDE : se o mesmo cliente pode ter diferentes pedidos no mesmo dia, E QUE esses pedidos podem ou n���ão ter sido j���á faturados, podemos cair numa situa���ção do tipo : pedidos NUMERO_PEDIDO DATA_PEDIDO COD_CLIENTE 001 01/12/2013 10 002 02/12/2013 10 faturamentos FUNCIONARIO COD_CLIENTE JOSE 10 ==> OU SEJA, o cliente 10 teve faturado o pedido 001 mas *** n���ão ** teve ainda faturado o pedido 002 : como esse cliente 10 ** existe ** na tabela FATURAMENTO (com ** OUTRO ** pedido, mas Existe) se eu restringir apenas pelo cod cliente vai aparecer informa���ção n���ão-relacionada, VAi aparecer esse pedido 002, sim ??? Sacou ??? S���ão coisas do tipo que n���ós precisamos saber : QUAIS S���Ò�O os relacionamentos, as REGRAS DE NEG���Ò�CIO envolvidas, sim ??? Sen���ão vc vai fazer salada-russa a���í, vai trazer dados que est���ão em uma tabela MAS n���ão est���ão na outra tabela correspondente Sim ??? []s Chiappa
RE: [oracle_br] Ajuda sql
Então : O fato de ser SAP ou não , e de ser gerenciado por outrem, absolutamente ** não ** tem a ver com a montagem de um caso-teste : o que a gente quer é que vc, no seu banco de teste, seu, particular, aonde vc pode tudo, faça uns CREATE TABLEs e uns INSERTs com dados ** equivalentes ** , apenas para podermos tentar reproduzir a técnica, a necessidade, sim ?? INVENTE os nomes das colunas, as constraints, os dados em si, bastando que sejam Equivalentes, ie, que sejam o mais parecidos possível com o que vc tem na prod do SAP, sim Isso para vc poder adaptar a solução encontrada lá no ambiente real, sim ?? E veja que eu insisti nos RELACIONAMENTOS : isso é crítico para vc Evitar ler dados que não se relacionam... Por exemplo, assumindo que os nomes das tabelas e das colunas fossem como os abaixo, que exista uma coluna com data/hora E QUE realmente o codigo do cliente se repete nas 3 tabelas e é o mesmo, com mesmo datatype, etc, digamos que façamos algo + ou - tipo : SELECT CLI.CODIGO_CLIENTE, CLI.NOME_CLIENTE, PED.NUMERO_PEDIDO, PED.DATA_PEDIDO, FAT.FUNCIONARIO FROM CLIENTE CLI, PEDIDO PED, FATURAMENTO FAT WHERE CLI.CODIGO_CLIENTE = PED.CODIGO_CLIENTE AND CLI.CODIGO_CLIENTE = FAT.CODIGO_CLIENTE AND PED.DATA_PEDIDO BETWEEN TO_DATE('01/12/2013 00:00:00', 'DD/MM/ HH24:MI:SS') AND TO_DATE('31/12/2013 23:59:59', 'DD/MM/ HH24:MI:SS') ORDER BY CLI.CODIGO_CLIENTE, PED.DATA_PEDIDO, PED.NUMERO_PEDIDO; vai funcionar ?? DEPENDE : se o mesmo cliente pode ter diferentes pedidos no mesmo dia, E QUE esses pedidos podem ou não ter sido já faturados, podemos cair numa situação do tipo : pedidos NUMERO_PEDIDO DATA_PEDIDO COD_CLIENTE 001 01/12/2013 10 002 02/12/2013 10 faturamentos FUNCIONARIO COD_CLIENTE JOSE 10 ==> OU SEJA, o cliente 10 teve faturado o pedido 001 mas *** não ** teve ainda faturado o pedido 002 : como esse cliente 10 ** existe ** na tabela FATURAMENTO (com ** OUTRO ** pedido, mas Existe) se eu restringir apenas pelo cod cliente vai aparecer informação não-relacionada, VAi aparecer esse pedido 002, sim ??? Sacou ??? São coisas do tipo que nós precisamos saber : QUAIS SÂO os relacionamentos, as REGRAS DE NEGÓCIO envolvidas, sim ??? Senão vc vai fazer salada-russa aí, vai trazer dados que estão em uma tabela MAS não estão na outra tabela correspondente Sim ??? []s Chiappa
RE: [oracle_br] Ajuda sql
Sim Chiappa tenho o código do Pedido na tabela faturamento, também tenho cliente que tem mais de um pedido por dia e data, por isso não posso agrupar, preciso de todos os registros de um determinado período, usar um order by desc no codigo do cliente, a versão do BD é 10g e tenho aproximadamente 2 gb de dados nas 3 tabelas, só não poderei dá alguns inserts pra teste porque o sistema é SAP administrado por outra empresa.desculpem a ignorância é prq tenho apenas 3 meses trabalhando com Oracle e SAP estou me esforçando pra aprender cada dia mais. Paulo To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 13 Jan 2014 05:23:24 -0800 Subject: Re: [oracle_br] Ajuda sql Na verdade mais que um DESCRIBE, a gente precisaria ���é saber a Modelagem, saber quem s���ão as colunas que devem ser usadas para relacionamento PRINCIPALMENTE essa tabela Faturamento, eu tenendo que ele N���ão quer a cada pedido ler toda a tabela de faturamentos, mas sim s���ó o faturamento de um pedido espec���ífico Ent���ão COM CERTEZA deve haver algum C���ódigo do Pedido citado na tabela de faturamento Uma id���éia de retorno tamb���ém seria legal, pois (imagino) que um Cliente deve/pode ter mais de um pedido por dia/data, o que ele precisa : mostrar todos ?? Agrupar de alguma maneira ?? Detalhes, detalhes E n���ão pega mal a VERS���Ò�O EXATA do database que estamos discutindo (pra vermos quais features podemos ou n���ão usar), uma id���éia de volumes e uns CREATEs das tabelas envolvidas e uns INSERTs com dados relevantes, pra se poder testar, n���é ? []s Chiappa
Re: [oracle_br] Ajuda sql
Na verdade mais que um DESCRIBE, a gente precisaria é saber a Modelagem, saber quem são as colunas que devem ser usadas para relacionamento PRINCIPALMENTE essa tabela Faturamento, eu tenendo que ele Não quer a cada pedido ler toda a tabela de faturamentos, mas sim só o faturamento de um pedido específico Então COM CERTEZA deve haver algum Código do Pedido citado na tabela de faturamento Uma idéia de retorno também seria legal, pois (imagino) que um Cliente deve/pode ter mais de um pedido por dia/data, o que ele precisa : mostrar todos ?? Agrupar de alguma maneira ?? Detalhes, detalhes E não pega mal a VERSÂO EXATA do database que estamos discutindo (pra vermos quais features podemos ou não usar), uma idéia de volumes e uns CREATEs das tabelas envolvidas e uns INSERTs com dados relevantes, pra se poder testar, né ? []s Chiappa
Re: [oracle_br] Ajuda sql
Olá Jose Paulo, Creio que você possa fazer de duas maneiras: Padrão ANSI SELECT CLI.CODIGO_CLIENTE, CLI.NOME_CLIENTE, PED.NUMERO_PEDIDO, PED.DATA_PEDIDO, FAT.FUNCIONARIOFROM CLIENTE CLIINNER JOIN PEDIDO PED ON (CLI.CODIGO_CLIENTE = PED.CODIGO_CLIENTE),INNER JOIN FATURAMENTO FAT ON (CLI.CODIGO_CLIENTE = FAT.CODIGO_CLIENTE); Padrão Oracle SELECT CLI.CODIGO_CLIENTE, CLI.NOME_CLIENTE, PED.NUMERO_PEDIDO, PED.DATA_PEDIDO, FAT.FUNCIONARIOFROM CLIENTE CLI, PEDIDO PED, FATURAMENTO FATWHERE CLI.CODIGO_CLIENTE = PED.CODIGO_CLIENTE AND CLI.CODIGO_CLIENTE = FAT.CODIGO_CLIENTE; Lembrando que estou levando em consideração apenas as informações que você passou, o melhor seria você mandar um Describe das tabelas Diego Melo 2014/1/11 JOSE PAULO > > > Pessoal tenho 3 tabelas Cliente,Pedido e faturamento dessas 3 tabelas > quero extrair código e nome do cliente,numero e data do pedido e nome do > funcionário que faturou da tabela faturamento,qual seria a sintaxe do join > pra extrair esses dados. o Código do cliente tenho nas 3 tabelas. > Grato a todos. > Paulo > > >
Re: [oracle_br] Ajuda SQL
Rapahel, Tua consulta nada mais é do que um AVG com group by. Dá para resolver com sql. Atenciosamente, Rodrigo Mufalani rodr...@mufalani.com.br www.mufalani.com.br On 26/06/2013, at 18:00, Raphael Franco wrote: > Pessoal, > > Como estou meio enferrujado no SQL, poderiam me ajudar > > Tenho a seguinte tabela: > > SQL> select * from teste; > > NOME_TABLESPACEDATA TOTAL_USADO > -- - --- > SYSAUX 27-MAY-13 553.13 > SYSAUX 11-JUN-13 627.56 > SYSAUX 25-JUN-13 604.88 > SYSTEM 27-MAY-13 450.94 > SYSTEM 11-JUN-13 459.94 > SYSTEM 25-JUN-13 459.94 > USERS 27-MAY-13 155.94 > USERS 11-JUN-13 193.56 > USERS 25-JUN-13 226 > > Gostaria de calcular a media de crescimento (Total_Usado) entre as datas. > > POr exemplo: > > SYSAUX 627,13 - 553,13 = 74,00 > 604,88 - 627,56 = -19,68 > > Calcula a media do resultado = (74,00)+(-19,68) / 2 = 27,16 (media) > > Teria como fazer isso via SQL ou terei que usar um bloco PL mesmo. > > vlws > > Raphael > > [As partes desta mensagem que não continham texto foram removidas] > > [As partes desta mensagem que não continham texto foram removidas] -- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr.com.br/ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Ajuda SQL LOADER
Boa tarde Elcio! Este link pode lhe ajudar: http://www.orafaq.com/wiki/SQL*Loader_FAQ Carl - Original Message - From: "Elcio Francisco" To: Sent: Monday, May 10, 2010 2:54 PM Subject: [oracle_br] Ajuda SQL LOADER Pessoal,tenho 2 arquivos .TXT e gostaria de joga-lo em uma Tabela Usando o SQL LOADER alguem ja viu como fazer isso??? Desde ja agradeço Elcio [As partes desta mensagem que não continham texto foram removidas] -- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » >Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! >VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
Re: [oracle_br] Ajuda SQL
Pode usar a função não documentada wm_concat. Mas é perigoso, pq a Oracle pode mudar a qualquer nova versão, eu testei na 10.2.0.3 e 11.1.0.6 e funciona, mas... SQL> select * from t; X Y - - 5405 1 5102 2 5405 2 5405 3 4 rows selected. SQL> col concat format a50 SQL> select y, translate(wm_concat(x), ',', '/') concat from t group by y; Y CONCAT - -- 1 5405 2 5102/5405 3 5405 3 rows selected. 2008/6/23 Renato Tecedor <[EMAIL PROTECTED]>: > > Pessoal estou com uma dificuldade para criar uma consulta no meu > banco aonde eu gostaria que retornasse o valor da coluna concatenado > na mesma linha quando o numero da sequencia fosse igual. por exemplo > > hoje ele esta assim: > > SQL> select dnfv_cd_cfop,dnfv_nr_seq_seq > 2 from det_nota_fiscal_vendas > 3 where dnfv_cd_empresa = 1 > 4 and dnfv_id_nota_fiscal = 'N' > 5 and dnfv_nr_seq_nota = 116026 > 6 group by dnfv_cd_cfop,dnfv_nr_seq_seq > 7 order by dnfv_nr_seq_seq; > > DNFV DNFV_NR_SEQ_SEQ > --- > 5405 1 > 5102 2 > 5405 2 > 5405 3 > > e gostaira que me retornasse assim: > > DNFV DNFV_NR_SEQ_SEQ > --- > 5405 1 > 5102/5405 2 > 5405 3 > > Obrigado, > Renato > > > -- Marcio Portes http://mportes.blogspot.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Ajuda SQL query
Já que voce está estudando! Feed for thought. 1) selecione todos da emp onde salary > ( selecione salary da emp onde ename = 'WARD') 2) selecione ename, dname da emp, dept onde dept.deptno = emp.depno (mesmo que nao exista) 3) selecione dname, minimo(salary), medio(salary), maximo(salary) da emp, dept onde emp.deptno = dept.deptno agrupado por dname :-) Bom estudo! On 8/11/06, Rafael Santos <[EMAIL PROTECTED]> wrote: > > Pessoal, estou estudando Oracle SQL, e estou em duvida em 3 exercícios > (principalmente joins) se puderem me ajudar, agradeço o compartilhamento de > experiência: > > Tabela emp: > > EMPNO ENAME SALARY COMM DEPTNO > - ---- - > 7499 ALLEN 1600 300 20 > 7521 WARD 1250 500 30 > 7566 JONES 2975 20 > 7654 MARTIN1350 1400 20 > > Tabela dept: > > DEPTNO DNAME LOC > ----- > 10 ACCOUNTING NEW YORK > 20 RESEARCH DALLAS > 30 SALES CHICAGO > 40 OPERATIONS BOSTON > > > 1 - Fazer um select que encontre todos os funcionarios que ganhem mais que > o funcionario WARD; > > 2 - Fazer um select que mostre os empregados (todos, inclusive os q nao > tem departamento) e o nome departamento dele; > > 3 - Descobrir o salário menor, a média e o máximo por departamento (deve > aparecer o nome do departamento); > > > Agradeço a atenção. > > > > - > Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. > Registre seu aparelho agora! > > [As partes desta mensagem que não continham texto foram removidas] > > > -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Seu banco Oracle retornou erro? Ora-??? Pesquise aqui: http://www.oraclebr.com.br/ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Ajuda SQL Loader
Bom dia Rodrigo O loader e um executavel do oracle, e sua chamada dever ser atraves do prompt do sistema operacional que se encontra no diretorio versao oracle \bin\SQLLDR.EXE. No caso da chamda do seu loader fiz algumas modificações que podem ajudar: Crie um bat; Nome :loader.bat Conteudo: sqlldr userid = control=vendas.ctl , USERID=usuario/[EMAIL PROTECTED] , ERRORS=999, direct=true exit - Crie o CTL Nome: vendas.ctl Conteudo: load data infile "caminho do arquivo\vendas_2004.txt" into table owner.tabela fields terminated by ";" TRAILING NULLCOLS ( loja, item, semana, ano, qt_venda ) - - Original Message - From: Rodrigo Lether To: Oracle - Grupos ; Oracle-BR1 ; Oracle-BR2 ; OraOracle ; Orcale-GPO Sent: Monday, July 17, 2006 6:22 PM Subject: [oracle_br] Ajuda SQL Loader Boa Tarde Mestres. Estou com uma certa dificuldade para gerar uma carga de dados pelo Loader. Criei meu arquivo "Control File" desta maneira : Arquivo: vendas.ctl load data infile 'vendas_2004.txt' into table venda fields terminated by ";" ( loja,item,semana,ano,qt_venda) para executar estou utilizando esta linha de comando: sqlldr userid = usuario/[EMAIL PROTECTED] control=vendas.ctl log=vendas.log direct=true O comando SQLLDR tenho de utilizar no prompt ou no sqlplus ??? Preciso setar alguma coisa ??? Obrigado, Rodrigo - O Yahoo! está de cara nova. Venha conferir! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] ajuda sql (urgente) - tentando melhorar o exemplo
na verdade o avaliado e o avaliador nao e um numero sequencial e o codigo da pessoa. vo tentar melhorar o exemplo tabela : escala colunas : avaliado avaliador dados : 2053 3254 2053 4174 2053 47888 2053 259222 2053 3254 40225 14788 40225 3247 40225 41 N X N Y ...... resultado avaliado avaliador1 avaliador2 avaliador3 avaliador4 avaliador5 2053 3254 4174 47888 259222 3254 40225 14788 3247 41 nullnull N X Y NULL NULLNULL ......... ...... ... ENTAO INDEPENDENTE do codigo do avaliado traria em uma unica linha todos os seus avaliadores tbm independente do codigo dos mesmos se alguem puder ajudar grato eluard - Original Message - From: Akira To: oracle_br@yahoogrupos.com.br Sent: Tuesday, July 12, 2005 3:50 PM Subject: Re: [oracle_br] ajuda sql (urgente) Alguma coisa assim... select avaliado, sum(decode(avaliado, 1, avaliador, null)) avaliador1, sum(decode(avaliado, 2, avaliador, null)) avaliador2, sum(decode(avaliado, 3, avaliador, null)) avaliador3, sum(decode(avaliado, 4, avaliador, null)) avaliador4, sum(decode(avaliado, 5, avaliador, null)) avaliador5 from escala group by avaliado Akira - Original Message - From: eluardoliveira To: oracle_br@yahoogrupos.com.br Sent: Tuesday, July 12, 2005 3:40 PM Subject: [oracle_br] ajuda sql (urgente) bem pessoal to com o seguinte problema... possui uma tabela que tem os seguintes campos e dados.. tabela : escala colunas : avaliado avaliador dados : 1 3 1 4 1 5 1 6 1 7 2 1 2 3 2 4 presciso fazer uma query que retorne o seguinte: avaliado avaliador1 avaliador2 avaliador3 avaliador4 avaliador5 1 3 4 5 6 7 2 1 3 4 null null N .. .. .. .. .. se alguem pudesse me ajudar com essa query ficaria estremamente grato ja que to batendo a cabeca a tarde toda e nao consegui ainda... a versão do banco de dados que eu uso é o Release 9.2.0.5.0 obrigado desde ja eluard [As partes desta mensagem que não continham texto foram removidas] __ Cancelar assinatura...: [EMAIL PROTECTED] Moderadores da lista:Dorian Anderson Soutto [EMAIL PROTECTED] Fernanda Damous [EMAIL PROTECTED] Alisson Aguiar [EMAIL PROTECTED] __ http://br.groups.yahoo.com/group/oracle_br/ __ Sair da Lista...: [EMAIL PROTECTED] -- Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. [As partes desta mensagem que não continham texto foram removidas] __ Cancelar assinatura...: [EMAIL PROTECTED] Moderadores da lista:Dorian Anderson Soutto [EMAIL PROTECTED] Fernanda Damous [EMAIL PROTECTED] Alisson Aguiar [EMAIL PROTECTED] __ http://br.groups.yahoo.com/group/oracle_br/ __ Sair da Lista...: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re:[oracle_br] ajuda sql (urgente)
__SP>SELECT * 2 FROM ESCALA; AVALIADO AVALIADOR -- -- 1 4 1 5 1 6 1 7 2 1 2 3 2 4 __SP>SELECT AVALIADO 2,MAX(DECODE(LINHA,1,AVALIADOR,NULL)) A1 3,MAX(DECODE(LINHA,2,AVALIADOR,NULL)) A2 4,MAX(DECODE(LINHA,3,AVALIADOR,NULL)) A3 5,MAX(DECODE(LINHA,4,AVALIADOR,NULL)) A4 6 FROM ( 7 SELECT AVALIADO, AVALIADOR, ROW_NUMBER() OVER (PARTITION BY AVALIADO ORDER BY AVALIADO) LINHA 8 FROM ESCALA) 9 GROUP BY AVALIADO; AVALIADO A1 A2 A3 A4 -- -- -- -- -- 1 4 5 6 7 2 1 3 4 Ronaldo. De:oracle_br@yahoogrupos.com.br Para:oracle_br@yahoogrupos.com.br Cópia: Data:Tue, 12 Jul 2005 18:40:55 - Assunto:[oracle_br] ajuda sql (urgente) bem pessoal to com o seguinte problema... possui uma tabela que tem os seguintes campos e dados.. tabela : escala colunas : avaliado avaliador dados : 1 3 1 4 1 5 1 6 1 7 2 1 2 3 2 4 presciso fazer uma query que retorne o seguinte: avaliado avaliador1 avaliador2 avaliador3 avaliador4 avaliador5 1 3 4 5 6 7 2 1 3 4 null null N .. .. .. .. .. se alguem pudesse me ajudar com essa query ficaria estremamente grato ja que to batendo a cabeca a tarde toda e nao consegui ainda... a versão do banco de dados que eu uso é o Release 9.2.0.5.0 obrigado desde ja eluard __ Cancelar assinatura...: [EMAIL PROTECTED] Moderadores da lista:Dorian Anderson Soutto [EMAIL PROTECTED] Fernanda Damous [EMAIL PROTECTED] Alisson Aguiar [EMAIL PROTECTED] __ http://br.groups.yahoo.com/group/oracle_br/ __ Sair da Lista...: [EMAIL PROTECTED] Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] __ Cancelar assinatura...: [EMAIL PROTECTED] Moderadores da lista:Dorian Anderson Soutto [EMAIL PROTECTED] Fernanda Damous [EMAIL PROTECTED] Alisson Aguiar [EMAIL PROTECTED] __ http://br.groups.yahoo.com/group/oracle_br/ __ Sair da Lista...: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] ajuda sql (urgente)
Alguma coisa assim... select avaliado, sum(decode(avaliado, 1, avaliador, null)) avaliador1, sum(decode(avaliado, 2, avaliador, null)) avaliador2, sum(decode(avaliado, 3, avaliador, null)) avaliador3, sum(decode(avaliado, 4, avaliador, null)) avaliador4, sum(decode(avaliado, 5, avaliador, null)) avaliador5 from escala group by avaliado Akira - Original Message - From: eluardoliveira To: oracle_br@yahoogrupos.com.br Sent: Tuesday, July 12, 2005 3:40 PM Subject: [oracle_br] ajuda sql (urgente) bem pessoal to com o seguinte problema... possui uma tabela que tem os seguintes campos e dados.. tabela : escala colunas : avaliado avaliador dados : 1 3 1 4 1 5 1 6 1 7 2 1 2 3 2 4 presciso fazer uma query que retorne o seguinte: avaliado avaliador1 avaliador2 avaliador3 avaliador4 avaliador5 1 3 4 5 6 7 2 1 3 4 null null N .. .. .. .. .. se alguem pudesse me ajudar com essa query ficaria estremamente grato ja que to batendo a cabeca a tarde toda e nao consegui ainda... a versão do banco de dados que eu uso é o Release 9.2.0.5.0 obrigado desde ja eluard [As partes desta mensagem que não continham texto foram removidas] __ Cancelar assinatura...: [EMAIL PROTECTED] Moderadores da lista:Dorian Anderson Soutto [EMAIL PROTECTED] Fernanda Damous [EMAIL PROTECTED] Alisson Aguiar [EMAIL PROTECTED] __ http://br.groups.yahoo.com/group/oracle_br/ __ Sair da Lista...: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html