Re: [oracle_br] Não repetir registro da uma coluna

2015-09-23 Por tôpico Mario Rodrigues marioirodrig...@gmail.com [oracle_br]
Chiappa,

Como sempre na mosca brother obrigado  ... era exatamente isso que
precisava ... obrigado a todos \o/

Em 23 de setembro de 2015 15:42, jlchia...@yahoo.com.br [oracle_br] <
oracle_br@yahoogrupos.com.br> escreveu:

>
>
> Opa, então : Óbvio, o GROUP BY "comum" é CLARO que não serve, ele
> transforma N linhas em uma só ("ensanduícha", "comprime", como eu dizia
> pros meus alunos) e te dá UM valor-resultado, que pode ser a SOMA, a Média,
> o MAX/MIN, absolutamente não é isso que vc quer, vc NÂO quer trabsformar as
> N linhas numa só...
>  Aí, não sendo possível usar os comandos built-in da sua tool cliente e/ou
> tool ou linguagem de programação (sqlplus, sql developer, toad e várias
> outras possuem comandos nativos pra sua necessidade), tendo que ser em SQL
> apenas então vc pode pesquisar que entre as funções básicas/escalares do
> RDBMS Oracle que NENHUMA vai te ajudar : o fato é que vc quer uma lógica
> que DEPENDA do valor exibido na linha anterior do resultset, pois vc só
> quer exibir o valor de uma dada coluna-chave a primeira vez, e as funções
> básicas só trabalham/enxergam o registro atual
>   SEMPRE que vc precisa de uma lógica que tenha que levar em conta o
> registro anterior e/ou o próximo registro em SQL apenas no RDBMS Oracle
> (sem lançar mão de PL/SQL), vc VAI TER que usar uma função analítica, se é
> desejado trabalhar em SQL apenas
> Exemplo :
>
> create table TB_TESTE(
>   coluna1 varchar2(5),
>   coluna2 number,
>   coluna3 number,
>   coluna4 number
>   );
>
> insert into TB_TESTE values('X',1,15,200);
> insert into TB_TESTE values('X',2,16,202);
> insert into TB_TESTE values('X',3,13,205);
> insert into TB_TESTE values('X',4,14,505);
> insert into TB_TESTE values('Y',1,25,300);
> insert into TB_TESTE values('Y',2,26,302);
>
> commit;
>
> select * from TB_TESTE;
>
> ==> eis o resultado :
>
> COLUNA1 COLUNA2COLUNA3COLUNA4
> ---  -- -- --
> X 1 15200
> X 2 16202
> X 3 13205
> X 4 14505
> Y 1 25300
> Y 2 26302
>
>  6 linhas selecionadas
>
>  O que eu preciso é "mostrar" pro sql se a ocorrência corrente do valor na
> coluna1 é a primeira ou não, e se não for a primeira eu "oculto"/mostro um
> NULL... LOGICAMENTE, a ROWNUM não serve porque ela mostra o número de linha
> geral da query, a gente precisa mostrar o número de linha para o 'grupo' de
> registros da chave X, depois zerar esse contador quando o valor
> mudar Isso pode ser assim :
>
>  select coluna1, coluna2, coluna3, coluna4, row_number()  over (partition
> by coluna1 order by coluna1) NUM from TB_TESTE;
>
> COLUNA1COLUNA2COLUNA3COLUNA4NUM
> --- -- -- -- --
> X1 15200  1
> X2 16202  2
> X3 13205  3
> X4 14505  4
> Y1 25300  1
> Y2 26302  2
>
>  6 linhas selecionadas
>
>  Tá vendo como agora sim fui capaz de dizer se é a primeira ocorrência ou
> não do valor-chave ?? Fica ** trivial ** meter um CASE e perguntar isso :
>
>
> SELECT CASE WHEN NUM=1 THEN COLUNA1 ELSE NULL END as COLUNA1, coluna2,
> coluna3, coluna4
>FROM (select coluna1, coluna2, coluna3, coluna4, row_number()  over
> (partition by coluna1 order by coluna1) NUM from TB_TESTE) ;
>
> COLUNA1COLUNA2COLUNA3COLUNA4
> --- -- -- --
> X1 15200
>  2 16202
>  3 13205
>  4 14505
> Y1 25300
>  2 26302
>
> 6 linhas selecionadas
>
> []s
>
>   Chiappa
> 
>


Re: [oracle_br] Não repetir registro da uma coluna

2015-09-23 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Opa, então : Óbvio, o GROUP BY "comum" é CLARO que não serve, ele transforma N 
linhas em uma só ("ensanduícha", "comprime", como eu dizia pros meus alunos) e 
te dá UM valor-resultado, que pode ser a SOMA, a Média, o MAX/MIN, 
absolutamente não é isso que vc quer, vc NÂO quer trabsformar as N linhas numa 
só...
 Aí, não sendo possível usar os comandos built-in da sua tool cliente e/ou tool 
ou linguagem de programação (sqlplus, sql developer, toad e várias outras 
possuem comandos nativos pra sua necessidade), tendo que ser em SQL apenas 
então vc pode pesquisar que entre as funções básicas/escalares do RDBMS Oracle 
que NENHUMA vai te ajudar : o fato é que vc quer uma lógica que DEPENDA do 
valor exibido na linha anterior do resultset, pois vc só quer exibir o valor de 
uma dada coluna-chave a primeira vez, e as funções básicas só 
trabalham/enxergam o registro atual 
  SEMPRE que vc precisa de uma lógica que tenha que levar em conta o registro 
anterior e/ou o próximo registro em SQL apenas no RDBMS Oracle (sem lançar mão 
de PL/SQL), vc VAI TER que usar uma função analítica, se é desejado trabalhar 
em SQL apenas 
Exemplo :

create table TB_TESTE(
  coluna1 varchar2(5),
  coluna2 number,
  coluna3 number,
  coluna4 number
  );
  
insert into TB_TESTE values('X',1,15,200);
insert into TB_TESTE values('X',2,16,202);
insert into TB_TESTE values('X',3,13,205);
insert into TB_TESTE values('X',4,14,505);
insert into TB_TESTE values('Y',1,25,300);
insert into TB_TESTE values('Y',2,26,302);

commit;

select * from TB_TESTE;

==> eis o resultado :

COLUNA1 COLUNA2COLUNA3COLUNA4
---  -- -- --
X 1 15200
X 2 16202
X 3 13205
X 4 14505
Y 1 25300
Y 2 26302

 6 linhas selecionadas 
 
 O que eu preciso é "mostrar" pro sql se a ocorrência corrente do valor na 
coluna1 é a primeira ou não, e se não for a primeira eu "oculto"/mostro um 
NULL... LOGICAMENTE, a ROWNUM não serve porque ela mostra o número de linha 
geral da query, a gente precisa mostrar o número de linha para o 'grupo' de 
registros da chave X, depois zerar esse contador quando o valor mudar 
Isso pode ser assim :
 
 select coluna1, coluna2, coluna3, coluna4, row_number()  over (partition by 
coluna1 order by coluna1) NUM from TB_TESTE;
 
COLUNA1COLUNA2COLUNA3COLUNA4NUM
--- -- -- -- --
X1 15200  1
X2 16202  2
X3 13205  3
X4 14505  4
Y1 25300  1
Y2 26302  2

 6 linhas selecionadas 
 
 Tá vendo como agora sim fui capaz de dizer se é a primeira ocorrência ou não 
do valor-chave ?? Fica ** trivial ** meter um CASE e perguntar isso :
 

SELECT CASE WHEN NUM=1 THEN COLUNA1 ELSE NULL END as COLUNA1, coluna2, coluna3, 
coluna4 
   FROM (select coluna1, coluna2, coluna3, coluna4, row_number()  over 
(partition by coluna1 order by coluna1) NUM from TB_TESTE) ;

COLUNA1COLUNA2COLUNA3COLUNA4
--- -- -- --
X1 15200
 2 16202
 3 13205
 4 14505
Y1 25300
 2 26302

6 linhas selecionadas 

[]s

  Chiappa

Re: [oracle_br] Não repetir registro da uma coluna

2015-09-23 Por tôpico Nino ninoba...@gmail.com [oracle_br]
você pode usar o LEAD pra verificar o valor da linha seguinte, caso seja
igual retorna NULL



2015-09-23 11:02 GMT-03:00 Mario Rodrigues marioirodrig...@gmail.com
[oracle_br] :

>
>
> Pessoal,
>
> Bom Dia
>
> Alguem poderia me dar uma luz, como faria uma select (uso de alguma
> função), no caso abaixo:
>
> O retorno do select é este:
> COLUNA1 COLUNA2 COLUNA3 COLUNA4 X 1 15 200 X 2 16 202 X 3 13
> 205 X 4 14 505
> Como faria para ficar assim:
> COLUNA1 COLUNA2 COLUNA3 COLUNA4 X 1 15 200 2 16 202 3 13 205 4 14 505
> Tem como eu não repetir o valor da COLUNA1??
>
> 
>


Re: [oracle_br] Não repetir registro da uma coluna

2015-09-23 Por tôpico Mario Rodrigues marioirodrig...@gmail.com [oracle_br]
Vlw pessoal, não uso o sqlplus e o GROUP BY nao serve ... sobre rollup e
cube .. tinha ate pensado neles (já conhecia o rollup do mysql) ... não
acho q vá ser 100% o q preciso, mas vou ver ... se alguem mais tiver alguma
ideia ...

vl

Em 23 de setembro de 2015 11:15, 'Schiavini' et...@schiavini.inf.br
[oracle_br]  escreveu:

>
>
> Se for no sqlplus tu pode configurar a quebra antes de rodar o select:
>
> break on COLUNA1
>
> Étore
>
> From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br]
> Sent: quarta-feira, 23 de setembro de 2015 11:03
> To: oracle_br@yahoogrupos.com.br
> Subject: [oracle_br] Não repetir registro da uma coluna
>
>
> Pessoal,
>
> Bom Dia
>
> Alguem poderia me dar uma luz, como faria uma select (uso de alguma
> função), no caso abaixo:
>
> O retorno do select é este:
>
> COLUNA1
>
> COLUNA2
>
> COLUNA3
>
> COLUNA4
>
> X
>
> 1
>
> 15
>
> 200
>
> X
>
> 2
>
> 16
>
> 202
>
> X
>
> 3
>
> 13
>
> 205
>
> X
>
> 4
>
> 14
>
> 505
>
> Como faria para ficar assim:
>
> COLUNA1
>
> COLUNA2
>
> COLUNA3
>
> COLUNA4
>
> X
>
> 1
>
> 15
>
> 200
>
>
> 2
>
> 16
>
> 202
>
>
> 3
>
> 13
>
> 205
>
>
> 4
>
> 14
>
> 505
>
> Tem como eu não repetir o valor da COLUNA1??
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>


RE: [oracle_br] Não repetir registro da uma coluna

2015-09-23 Por tôpico 'Schiavini' et...@schiavini.inf.br [oracle_br]
Se for no sqlplus tu pode configurar a quebra antes de rodar o select:

 

break on COLUNA1

 

Étore

 

From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] 
Sent: quarta-feira, 23 de setembro de 2015 11:03
To: oracle_br@yahoogrupos.com.br
Subject: [oracle_br] Não repetir registro da uma coluna

 

  

Pessoal, 

 

Bom Dia

 

Alguem poderia me dar uma luz, como faria uma select (uso de alguma função), no 
caso abaixo:

 

O retorno do select é este:


COLUNA1

COLUNA2

COLUNA3

COLUNA4


X

1

15

200


X

2

16

202


X

3

13

205


X

4

14

505

 

Como faria para ficar assim:


COLUNA1

COLUNA2

COLUNA3

COLUNA4


X

1

15

200


2

16

202


3

13

205


4

14

505

 

Tem como eu não repetir o valor da COLUNA1??





[As partes desta mensagem que não continham texto foram removidas]



Re: [oracle_br] Não repetir registro da uma coluna

2015-09-23 Por tôpico 'Fernando Franquini 'capin'' fernando.franqu...@gmail.com [oracle_br]
Procure por rollup e cube Oracle

2015-09-23 11:05 GMT-03:00 Vitor Junior vitorj...@gmail.com [oracle_br] <
oracle_br@yahoogrupos.com.br>:

>
>
> Não seria um group by na coluna 1?
>
> Em qua, 23 de set de 2015 às 11:03, Mario Rodrigues
> marioirodrig...@gmail.com [oracle_br] 
> escreveu:
>
>>
>>
>> Pessoal,
>>
>> Bom Dia
>>
>> Alguem poderia me dar uma luz, como faria uma select (uso de alguma
>> função), no caso abaixo:
>>
>> O retorno do select é este:
>> COLUNA1 COLUNA2 COLUNA3 COLUNA4 X 1 15 200 X 2 16 202 X 3 13
>> 205 X 4 14 505
>> Como faria para ficar assim:
>> COLUNA1 COLUNA2 COLUNA3 COLUNA4 X 1 15 200 2 16 202 3 13 205 4 14 505
>> Tem como eu não repetir o valor da COLUNA1??
>>
>> --
> Att,/Regards,
>
>
> Vitor Jr.
> Infraestrutura / Infrastructure Team
>
> Oracle 12c DBA Certified Professional - OCP 12c
> Oracle 11g DBA Certified Professional - OCP 11g
> Oracle Certified Expert, Oracle Real Application Clusters 11g and Grid
> Infrastructure Administrator - OCE
> Oracle Database 11g Performance Tuning Certified Expert - OCE
> Oracle Exadata 11g Certified Implementation Specialist
> Oracle Certified Associate, MySQL 5
> mail, gtalk e msn: vitorj...@gmail.com
> http://certificacaobd.com.br/
> skype: vjunior1981
> https://mybizcard.co/vitor.jr.385628
>
>
> 
>



-- 
Capin
Graduado: Bacharel em Ciências da Computação - UFSC
Analista de Sistemas e de Banco de Dados / DBA
48.9924.8212 Vivo - Florianópolis - SC - Brasil

http://certificacaobd.com.br/
http://br.linkedin.com/in/capin


Re: [oracle_br] Não repetir registro da uma coluna

2015-09-23 Por tôpico Vitor Junior vitorj...@gmail.com [oracle_br]
Não seria um group by na coluna 1?

Em qua, 23 de set de 2015 às 11:03, Mario Rodrigues
marioirodrig...@gmail.com [oracle_br] 
escreveu:

>
>
> Pessoal,
>
> Bom Dia
>
> Alguem poderia me dar uma luz, como faria uma select (uso de alguma
> função), no caso abaixo:
>
> O retorno do select é este:
> COLUNA1 COLUNA2 COLUNA3 COLUNA4 X 1 15 200 X 2 16 202 X 3 13
> 205 X 4 14 505
> Como faria para ficar assim:
> COLUNA1 COLUNA2 COLUNA3 COLUNA4 X 1 15 200 2 16 202 3 13 205 4 14 505
> Tem como eu não repetir o valor da COLUNA1??
> 
>
-- 
Att,/Regards,


Vitor Jr.
Infraestrutura / Infrastructure Team

Oracle 12c DBA Certified Professional - OCP 12c
Oracle 11g DBA Certified Professional - OCP 11g
Oracle Certified Expert, Oracle Real Application Clusters 11g and Grid
Infrastructure Administrator - OCE
Oracle Database 11g Performance Tuning Certified Expert - OCE
Oracle Exadata 11g Certified Implementation Specialist
Oracle Certified Associate, MySQL 5
mail, gtalk e msn: vitorj...@gmail.com
http://certificacaobd.com.br/
skype: vjunior1981
https://mybizcard.co/vitor.jr.385628


[oracle_br] Não repetir registro da uma coluna

2015-09-23 Por tôpico Mario Rodrigues marioirodrig...@gmail.com [oracle_br]
Pessoal,

Bom Dia

Alguem poderia me dar uma luz, como faria uma select (uso de alguma
função), no caso abaixo:

O retorno do select é este:
COLUNA1 COLUNA2 COLUNA3 COLUNA4 X 1 15 200 X 2 16 202 X 3 13 205
X 4 14 505
Como faria para ficar assim:
COLUNA1 COLUNA2 COLUNA3 COLUNA4 X 1 15 200 2 16 202 3 13 205 4 14 505
Tem como eu não repetir o valor da COLUNA1??