PIVOT dinâmico SQL Server
Boa tarde,
Tenho a seguinte consulta :
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 :
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.
Tenho a seguinte consulta :
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 :
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
Curtidas 0
Respostas
Alex Lekao
14/03/2019
Oi Edvaldo, boa tarde!!!
Talves vc precisara fazer uma combinação.
Assim te ajuda?
Talves vc precisara fazer uma combinação.
Assim te ajuda?
select convert(varchar(7),getdate(),21)
GOSTEI 0
Edvaldo Lucena
14/03/2019
Oi Edvaldo, boa tarde!!!
Talves vc precisara fazer uma combinação.
Assim te ajuda?
Boa tarde,Talves vc precisara fazer uma combinação.
Assim te ajuda?
select convert(varchar(7),getdate(),21)
Creio que não, por ser tratar de dados dinâmicos da consulta.
GOSTEI 0
Guilherme Augusto
14/03/2019
Boa tarde,
Tenho a seguinte consulta :
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 :
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.
Tenho a seguinte consulta :
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 :
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