Fórum PIVOT dinâmico SQL Server #601156
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)
goO 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?
select convert(varchar(7),getdate(),21)
Gostei + 0
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.
Gostei + 0
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)
goO 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 :)