Fórum PIVOT dinâmico SQL Server #601156
14/03/2019
0
Tenho a seguinte consulta :
1 | SELECT * FROM BASE_RREIP WHERE dt_hr_fecom BETWEEN DATEADD( MONTH , -12,GETDATE()) AND DATEADD( MONTH ,1, GETDATE()) |
E desejo montar uma consulta PIVOT da seguinte forma, baseada na consulta acima:
DESGIGNACAO TOTAL mar/18 abr/18 mai/18 jun/18 jul/18 ago/18 set/18 out/18 nov/18 dez/18 jan/19 fev/19 mar/19
XXX 26 2 2 2 2 2 2 2 2 2 2 2 2 2
Pesquisando e com ajuda de algumas pessoas consegui gerar o código abaixo e que me resultou :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | declare @colunas_pivot as nvarchar( max ), @comando_sql as nvarchar( max ) set @colunas_pivot = stuff(( select distinct ',' + quotename( month (dt_hr_fecom)) from TOP_ANO for xml path( '' ) ), 1, 1, '' ) print @colunas_pivot set @comando_sql = ' select * from ( select month(dt_hr_fecom) as mes, designacao_circuito, COUNT(NUM_REC) as Valor from TOP_ANO group by designacao_circuito, month(dt_hr_fecom) ) em_linha pivot (sum(valor) for mes in (' + @colunas_pivot + ')) em_colunas order by 1' execute (@comando_sql) go |
O que eu preciso é que no nome das colunas (meses) venha acompanho do ano(ex.: 03/2018 e 03/2019) e se possível ordenado.

Edvaldo Lucena
Curtir tópico
+ 0Posts
14/03/2019
Alex Lekao
Talves vc precisara fazer uma combinação.
Assim te ajuda?
1 | select convert ( varchar (7),getdate(),21) |
Gostei + 0
14/03/2019
Edvaldo Lucena
Talves vc precisara fazer uma combinação.
Assim te ajuda?
1 | select convert ( varchar (7),getdate(),21) |
Creio que não, por ser tratar de dados dinâmicos da consulta.
Gostei + 0
25/01/2023
Guilherme Augusto
Tenho a seguinte consulta :
1 | SELECT * FROM BASE_RREIP WHERE dt_hr_fecom BETWEEN DATEADD( MONTH , -12,GETDATE()) AND DATEADD( MONTH ,1, GETDATE()) |
E desejo montar uma consulta PIVOT da seguinte forma, baseada na consulta acima:
DESGIGNACAO TOTAL mar/18 abr/18 mai/18 jun/18 jul/18 ago/18 set/18 out/18 nov/18 dez/18 jan/19 fev/19 mar/19
XXX 26 2 2 2 2 2 2 2 2 2 2 2 2 2
Pesquisando e com ajuda de algumas pessoas consegui gerar o código abaixo e que me resultou :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | declare @colunas_pivot as nvarchar( max ), @comando_sql as nvarchar( max ) set @colunas_pivot = stuff(( select distinct ',' + quotename( month (dt_hr_fecom)) from TOP_ANO for xml path( '' ) ), 1, 1, '' ) print @colunas_pivot set @comando_sql = ' select * from ( select month(dt_hr_fecom) as mes, designacao_circuito, COUNT(NUM_REC) as Valor from TOP_ANO group by designacao_circuito, month(dt_hr_fecom) ) em_linha pivot (sum(valor) for mes in (' + @colunas_pivot + ')) em_colunas order by 1' execute (@comando_sql) go |
O que eu preciso é que no nome das colunas (meses) venha acompanho do ano(ex.: 03/2018 e 03/2019) e se possível ordenado.
Estou com a mesma duvida, voce conseguiu alguma resposta?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)