Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Denisson
Contributor
Contributor

Transformar linhas em colunas

Bom dia amigos, essa é minha primeira postagem e, embora o título do post não seja novo, não encontrei uma solução para o caso. Agradeço demais se alguém puder ajudar.

Tenho a seguinte tabela:

CódigoTipo_1Nome_Tipo_1
40101
40202
50102

 

precisaria que ela ficasse assim (no script):

CódidoTipo_1Nome_ Tipo_1Tipo_2Nome_Tipo_3
40101202
50102  

 

Esse é um modelo resumido. Poderia existir mais 4 colunas (Tipo 3, Nome Tipo 3, Tipo 4, Nome Tipo 4). Será que algum usuário mais experiente já enfrentou essa questão. Já tentei o crosstable, mas ele faz o contrário do que desejo. Também vi os posts  que juntam todos os dados em uma única coluna, mas não resolve meu problema.

Obrigado antecipadamente.

Abraços,

1 Solution

Accepted Solutions
Denisson
Contributor
Contributor
Author

Bem, acabei conseguindo fazer da seguinte forma:

Tabela:
LOAD [Codigo],

//junta as duas colunas em uma só

Tipo_1 & ';' & Nome_Tipo_1 as ABJuntos //10;1 e 20;2

FROM xxxxxxxx;
STORE Tabela into [Temp.qvd] (qvd);
DROP Table Tabela;

Tabela2:

Load
[Código],
// concatena a coluna cujos campos foram juntados anteriormente a partir do 'Código' em comum. No exemplo, junta as informações das linhas 40 em apenas uma linha 40 (10;1;20;2)
CONCAT([ABJuntos],';') as ABJuntos

Group By [A];


LOAD [Código],
ABJuntos
FROM
[Temp.qvd]
(qvd);

store Tabela2 into [Temp.qvd] (qvd);

DROP Table Tabela2;

//gera uma coluna para cada informação separada por ;

Load

SubField(ABJuntos,';',1) as Tipo_1,
SubField(ABJuntos,';',2) as Nome_Tipo_1,
SubField(ABJuntos,';',3) as Tipo_2,
SubField(ABJuntos,';',4) as Nome_Tipo_2

From (Temp.qvd)

 

Funcionou aqui... estou compartilhando porque talvez ajude mais alguém e para colher eventuais críticas de problemas que o código possa gerar.

Abraço,

Dênisson

View solution in original post

2 Replies
jaibau1993
Partner - Creator III
Partner - Creator III

Hi Denisson!

I dont see an easy or complete way to solve your problem with no scripting. The most understandable and quik solution may be using a straight (or pivot) table and define as much expressions as you need. Please, see the attached document with my proposal.

Bests,

Jaime.

Denisson
Contributor
Contributor
Author

Bem, acabei conseguindo fazer da seguinte forma:

Tabela:
LOAD [Codigo],

//junta as duas colunas em uma só

Tipo_1 & ';' & Nome_Tipo_1 as ABJuntos //10;1 e 20;2

FROM xxxxxxxx;
STORE Tabela into [Temp.qvd] (qvd);
DROP Table Tabela;

Tabela2:

Load
[Código],
// concatena a coluna cujos campos foram juntados anteriormente a partir do 'Código' em comum. No exemplo, junta as informações das linhas 40 em apenas uma linha 40 (10;1;20;2)
CONCAT([ABJuntos],';') as ABJuntos

Group By [A];


LOAD [Código],
ABJuntos
FROM
[Temp.qvd]
(qvd);

store Tabela2 into [Temp.qvd] (qvd);

DROP Table Tabela2;

//gera uma coluna para cada informação separada por ;

Load

SubField(ABJuntos,';',1) as Tipo_1,
SubField(ABJuntos,';',2) as Nome_Tipo_1,
SubField(ABJuntos,';',3) as Tipo_2,
SubField(ABJuntos,';',4) as Nome_Tipo_2

From (Temp.qvd)

 

Funcionou aqui... estou compartilhando porque talvez ajude mais alguém e para colher eventuais críticas de problemas que o código possa gerar.

Abraço,

Dênisson