PIVOT dinâmico SQL Server
14/03/2019
0
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
Posts
14/03/2019
Alex Lekao
Talves vc precisara fazer uma combinação.
Assim te ajuda?
select convert(varchar(7),getdate(),21)
14/03/2019
Edvaldo Lucena
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.
25/01/2023
Guilherme Augusto
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?
Clique aqui para fazer login e interagir na Comunidade :)