Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucia.Souza

Unpivot

Recommended Posts

Srs, preciso de uma ajuda com a função UNPIVOT

 

Tenho uma tabela com a seguinte estrutura:

CREATE TABLE TESTE 
   (ID_CLIENTE_EXTERNO NUMBER(19,0), 
ID_CLIENTE_INTERNO NUMBER(19,0) NOT NULL, 
DATA_BASE DATE, 
DATA_ENVIO DATE, 
DATA_HORA_RESPOSTA DATE, 
NOME_COMPLETO_CLIENTE VARCHAR2(128 BYTE), 
EMAIL VARCHAR2(128 BYTE), 
TELEFONE_RESIDENCIAL VARCHAR2(20 BYTE), 
TELEFONE_CELULAR VARCHAR2(20 BYTE), 
CPF VARCHAR2(11 BYTE), 
AREA_PESQUISA VARCHAR2(10 BYTE), 
CODIGO_MARCA NUMBER, 
NOME_MARCA VARCHAR2(128 BYTE), 
CODIGO_UNIDADE NUMBER, 
NOME_UNIDADE VARCHAR2(128 BYTE), 
Q1 NUMBER, 
Q2 NUMBER, 
Q3 NUMBER, 
Q4 NUMBER, 
Q5 NUMBER, 
Q6 VARCHAR2(255 BYTE), 
Q7 NUMBER, 
Q8 NUMBER, 
Q9 NUMBER, 
Q10 NUMBER, 
Q11 NUMBER, 
Q12 NUMBER, 
Q13 NUMBER, 
Q14 NUMBER, 
Q15 NUMBER, 
Q16 NUMBER, 
Q17 NUMBER, 
Q18 NUMBER, 
Q19 NUMBER, 
Q20 NUMBER, 
Q21 NUMBER, 
Q22 NUMBER, 
Q23 NUMBER, 
Q24 NUMBER, 
Q25 NUMBER, 
Q26 NUMBER, 
Q27 NUMBER, 
Q28 NUMBER, 
Q29 NUMBER, 
Q30 NUMBER, 
Q31 NUMBER, 
Q32 NUMBER, 
Q33 NUMBER, 
Q34 VARCHAR2(4000 BYTE)
   ) ;

Preciso transformar cada coluna "Q" em linha

Não vou utilizar todos os campos dessa tabela e então montei a seguinte query:

 

 

 

SELECT 
   ID_CLIENTE_INTERNO,
   DATA_HORA_RESPOSTA, 
   ID_PERGUNTA,
   RESPOSTA 
FROM TESTE  
UNPIVOT (RESPOSTA FOR ID_PERGUNTA IN (Q1,Q2,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17,Q18,Q19,Q20,Q21,Q22,Q23,Q24,Q25,Q26,Q27,Q28,Q29,Q30,Q31,Q32,Q33,Q34 )); 

 

porém está apresentando o seguinte erro: ORA-00933: SQL command not properly ended

 

Alguém sabe o que significa isso? procurei na internet, mas não encontrei muita coisa que pudesse me ajudar.

 

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem um detalhe os campos a serem "unpivoteados" não tem o mesmo type , a síntaxe parece correta mas o Oracle reclama dela , pode ser a questão do tipo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, ainda preciso da ajuda de vocês.

 

Alterei a estrutura da minha tabela para que todos os campos "pivoteados" fiquem como o mesmo data type.

No schema Oracle XE Local (minha conexão local), fiz a query e funciona muito bem, porém quando rodo a mesma query no schema da empresa, apresenta o erro:

 

ORA-00933: SQL command not properly ended

00933. 00000 - "SQL command not properly ended"

*Cause:

*Action:

Erro na linha: 10 Coluna: 34

 

Seria erro de permissão nesse caso???

 

Nova estrutura da tabela:

CREATE GLOBAL TEMPORARY TABLE Schema_WRK.Table_Name

(

ID_SISTEMA NUMBER NOT NULL,

ID_PACIENTE VARCHAR2(20 BYTE) NOT NULL ,

DT_HORA_RESPOSTA DATE NOT NULL,

Q1 VARCHAR2(1 BYTE),

Q2 VARCHAR2(1 BYTE),

Q3 VARCHAR2(128 BYTE),

Q4 VARCHAR2(255 BYTE),

Q5 VARCHAR2(2 BYTE),

Q6 VARCHAR2(128 BYTE),

Q7 VARCHAR2(128 BYTE),

Q8 VARCHAR2(128 BYTE),

Q9 VARCHAR2(128 BYTE),

Q10 VARCHAR2(128 BYTE),

Q11 VARCHAR2(128 BYTE),

Q12 VARCHAR2(128 BYTE),

Q13 VARCHAR2(128 BYTE),

Q14 VARCHAR2(128 BYTE),

Q15 VARCHAR2(128 BYTE),

Q16 VARCHAR2(128 BYTE),

Q17 VARCHAR2(128 BYTE),

Q18 VARCHAR2(128 BYTE),

Q19 VARCHAR2(128 BYTE),

Q20 VARCHAR2(128 BYTE),

Q21 VARCHAR2(128 BYTE),

Q22 VARCHAR2(128 BYTE),

Q23 VARCHAR2(128 BYTE),

Q24 VARCHAR2(128 BYTE),

Q25 VARCHAR2(128 BYTE),

Q26 VARCHAR2(128 BYTE),

Q27 VARCHAR2(128 BYTE),

Q28 VARCHAR2(128 BYTE),

Q29 VARCHAR2(128 BYTE),

Q30 VARCHAR2(128 BYTE),

Q31 VARCHAR2(128 BYTE),

Q32 VARCHAR2 (4000 BYTE),

CONSTRAINT PK_WRK_Table_Name PRIMARY KEY (ID_SISTEMA, ID_PACIENTE, DT_HORA_RESPOSTA)

) ON COMMIT PRESERVE ROWS;

 

Query:

SELECT

ID_SISTEMA,

ID_PACIENTE,

DT_HORA_RESPOSTA,

ID_PERGUNTA,

RESPOSTA

FROM Schema_WRK.Table_Name UNPIVOT(RESPOSTA FOR ID_PERGUNTA IN

( Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17,Q18,Q19,Q20,Q21,Q22,Q23,Q24,Q25,Q26,Q27,Q28,Q29,Q30,Q31,Q32 ));

 

 

Por favor, é muito importante e urgente. Realmente não consigo entender onde está o problema, já que esta mesma query (com a mesma estrutura de tabela) funcionou em outro ambiente.

Apenas no ambiente da empresa é que não funciona.

 

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro parece de síntaxe , o post anterior ficou to bagunçado é que dificulta o entendimento.

 

A sql dá erro no sqlplus ou equivalente ?

 

table_name não é bom nome para uma tabela ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.