Ir ao conteúdo
  • Cadastre-se

Não repetir dado na tabela à esquerda.


Posts recomendados

Bom dia,

 

Queria saber se tem uma maneira ou algum comando que traga os dados em SQL como se fosse um árvore (fiz o exemplo na imagem nesse post). Minha ideia é a seguinte, tenho duas tabelas com relacionamentos certinho, acontece que eu queria apresentar os dados sem repetir na coluna da esquerda, já que na tabela X eu tenho 1 registro que equivale a  1 ou + na tabela Y, queria saber se tem um maneira de fazer isso, a seguir deixo a representação do que quero fazer para ficar mais fácil o entendimento.

 

 

pE3SRdV.png

Link para o comentário
Compartilhar em outros sites

Olá akilles0,


Desconheço tal forma de trabalhar com o SQL, pois o mesmo trabalha com registros em linhas, ou seja, ele identifica dados que são iguais, porém, tem que coincidir todos os dados da linha X com linha Y (usando o DISTINCT).
Não sei qual sua necessidade, se isso poderia lhe ajudar, mas você já tentou exportar as informações ao Excel e utilizar uma tabela dinâmica para estes casos?

-

Atenciosamente,
Adonai Fabricio Nozella

Link para o comentário
Compartilhar em outros sites

23 horas atrás, dif disse:

Não me recordo agora... mas não seria o caso de usar o group By?

Posso estar errado, mas pelo que eu me lembro quando precisei fazer isso com onde tinha um N:N  de várias tabelas...  usei um distinct com group by.

 

Sim, resolveria, porém (obviamente) repete a coluna, e ele quer via SQL que a coluna que for repetir não apareça o nome.

 

 

Alias, pensando bem, faça um  ROWNUM OVER ( PARTITION BY X.DATA, X.TIPO, X.TEXTO ORDER BY X.DATA ASC )

COM UM CASE SE O VALOR FOR DIFERENTE DE ZERO MOSTRA NULL PARA CADA COLUNA.

 

A ideia é a seguinte, com ROWNUM com partition by, você consegue definir uma sequencia de linhas para qualquer grupo que quiser separar então

A

A

B

B

 

VAI SER

1 A

2 A

 

1B

2B

 

ENTÃO se fizer um

 

CASE ROWNUM

WHEN 1 THEN Texto ELSE NULL

 

acho que assim dá pra fazer como quer, porém utilizei esse recurso já apenas em Oracle e Sql Server, não sei se o banco que você utiliza tem, mas tá ai.

 

To com sono. Se preferir me passe o código e monto para você.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

16 horas atrás, emailpublico3 disse:

 

Sim, resolveria, porém (obviamente) repete a coluna, e ele quer via SQL que a coluna que for repetir não apareça o nome.

 

 

Alias, pensando bem, faça um  ROWNUM OVER ( PARTITION BY X.DATA, X.TIPO, X.TEXTO ORDER BY X.DATA ASC )

COM UM CASE SE O VALOR FOR DIFERENTE DE ZERO MOSTRA NULL PARA CADA COLUNA.

 

A ideia é a seguinte, com ROWNUM com partition by, você consegue definir uma sequencia de linhas para qualquer grupo que quiser separar então

A

A

B

B

 

VAI SER

1 A

2 A

 

1B

2B

 

ENTÃO se fizer um

 

CASE ROWNUM

WHEN 1 THEN Texto ELSE NULL

 

acho que assim dá pra fazer como quer, porém utilizei esse recurso já apenas em Oracle e Sql Server, não sei se o banco que você utiliza tem, mas tá ai.

 

To com sono. Se preferir me passe o código e monto para você.

 

Usando row_number() over () cheguei num resultado mais próximo do satisfatório.

 

Fiquei com uma dúvida, usei três row_number() over () para um para cada campo (Data, TIpo e Texto) por conta do WHEN, já que preciso dessas colunas separadas. Fiz o certo? Ou teria como usar apenas um CASE row_number() over () para inserir as colunas? Pode me ajudar nesse questão.

 

Muito obrigado pela ajuda até aqui.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...