TROCAR LINHA POR COLUNA NO SQL SERVER

 Tópico anterior Próximo tópico Novo tópico

TROCAR LINHA POR COLUNA NO SQL SERVER

SQL / DATABASE

 Compartilhe  Compartilhe  Compartilhe
#496685 - 08/04/2021 21:18:15

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Olá Pessoal,

Uma determinada Query gera:
Cod.        Ano         Disc         Nota
00064    2018    ARTE    10,0
00064    2018    CFBI    7,5
00064    2018    EFIS    9,8
00064    2018    EREL    9,2
00081    2018    ARTE    10,0
00081    2018    CFBI    8,2
00081    2018    EFIS    8,8
00081    2018    EREL    9,2

O que faço na query para ela ficar assim:
invertendo a Coluna Disc e Nota
Cod      Ano      ARTE    CFBI    EFIS    EREL
00064   2018       10,0       7,5       9,8        9,2    
00081   2018       10,0       8,2       8,8        9,2    

Olhei alguns tutoriais na internet e não consegui fazer Funcionar, sei que usa um tal de PIVOT
Obs: a Coluna Disc é variável pode ter de 1 a 18 colunas, aí sim que os tutoriais fizeram um nó na cabeça.
Alguém sabe como fazer?

Grato



#496686 - 08/04/2021 23:29:27

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Como o valor para a coluna é dinâmico(tem vários), usar Pivot aqui ficaria SUPER complicado. Eu usaria subquery. Fiz um fiddle pra você ver se serve pro seu caso

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


Resposta escolhida #496687 - 09/04/2021 03:18:44

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 09/04/2021 04:20:51 por JABA

Fiz assim e ficou igual o que você apresentou. Teste com mais dados para ver se vai continuar do jeito que você quer.

select [Cod], [Ano], [ARTE], [CFBI], [EFIS], [EREL] from
(select * from suaTabela) p
PIVOT(avg([Nota]) FOR [Disc] IN ([ARTE], [CFBI], [EFIS], [EREL])) AS pvt;


OBS: Coloquei o campo [nota] em decimal.

stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query

_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#496688 - 09/04/2021 04:46:15

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Legal! Não sabia que dava pra fazer assim!

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#496689 - 09/04/2021 09:34:42

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Opa, Deu certo parcialmente.
O problema que o campo Nota é string, pois ela pode ser qualquer coisa, por exemplo 'A'
será que tem como usar string?

Numero de Disc dinâmico no link, está confuso. tentando entender



#496693 - 09/04/2021 12:59:45

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 09/04/2021 14:46:34 por JCM0867

Consegui fazer o Dinâmico
Achei, como ele aceitar Nota como string:
PIVOT(Max([Nota]) for,,,

Obrigado




 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JCM0867 em 09/04/2021 14:47:02