• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

charlie69

[sql] transpose

10 mensagens neste tópico

Boas

Tenho uma tabela neste formato

ID C1 C2 C3

12  A  C  B

19  C  B  A

22  B  C  A

Quero passar para este formato

ID  A  B  C

12  1  3  2

19  3  2  1

22  3  1  2

É uma espécie de transpose, basicamente é ver a posição de cada letra.

Alguém sabe como fazer isto?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Algo do tipo:

select

(IF C1 = 'A' THEN 1 ELSE IF C2 = 'A' THEN 2 ELSE IF C3 = 'A' THEN 3) as A,

( igual para B ) as B,

( idem para C ) as C

from tabela...

Tens de consultar o manual da BD que estás a usar para veres a sintaxe do IF THEN ELSE

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok, mas existe maneirta de por isso dinamico, de forma que hoje tenho 3 colunas, amanha posso ter 4

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok, mas existe maneirta de por isso dinamico, de forma que hoje tenho 3 colunas, amanha posso ter 4

Sim, mas para tal tens de recorrer à linguagem de programação da base de dados que usas.

Crias uma função onde constróis essa query de forma dinâmica consultando as colunas através do catálogo da base de dados, executas a query dinâmica e retornas o resultado, que tipicamente é um cursor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Onde estou a tentar montar isto é SAS.

Se alguém tiver alguma ideia, de como fazer isto lá... isto aceita sql

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Que base de dados está o SAS a usar? Ele aceita SQL porque está a passar isso ao SGBD.

O SAS tem uma linguagem de programação, já viste se tem funcionalidades suficientes para fazer isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

charlie69, isso não responde à pergunta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora