Quantos Dep Estaduais Por Estado

deputados federais eleitos, Deputados Federais Eleitos 2018, Candidatos Eleitos 2018, Quantos Deputados Federais Por Estado, Quantos Deputados Federais, Quantos Deputados Por Estado, Deputado Federal Eleito, Resultado Eleições 2014, Apuração Eleições 2014, Deputado Federal Eleitos, Candidatos A Dep Federal Mg 2018, Deputado Federal Resultado

Como adicionar colunas dinamicamente em uma query, dependendo de quantos anos o usuario quer consultar

SELECT FILIAL, FAMILIA, FORNECEDOR, DESCRICAO_FORNECEDOR, PRODUTO,
(SUM(JANEIRO) * percentual_fornecimento)/100 AS JANEIRO,
(SUM(FEVEREIRO) * percentual_fornecimento)/100  AS FEVEREIRO,
(SUM(MARCO) * percentual_fornecimento)/100 AS MARCO, 
(SUM(ABRIL) * percentual_fornecimento)/100 AS ABRIL,
(SUM(MAIO) * percentual_fornecimento)/100 AS MAIO,
(SUM(JUNHO) * percentual_fornecimento)/100 AS JUNHO, 
(SUM(JULHO) * percentual_fornecimento)/100 AS JULHO,
(SUM(AGOSTO) * percentual_fornecimento)/100 AS AGOSTO,
(SUM(SETEMBRO) * percentual_fornecimento)/100 AS SETEMBRO, 
(SUM(OUTUBRO) * percentual_fornecimento)/100 AS OUTUBRO,
(SUM(NOVEMBRO) * percentual_fornecimento)/100 AS NOVEMBRO,
(SUM(DEZEMBRO) * percentual_fornecimento)/100 AS DEZEMBRO 
FROM (
SELECT FILIAL, FAMILIA, PRODUTO, fornecedor, descricao_fornecedor, percentual_fornecimento,
DECODE(MES, 'JANEIRO', QUANTIDADE_CONSUMO,0) AS JANEIRO,
DECODE(MES, 'FEVEREIRO', QUANTIDADE_CONSUMO,0) AS FEVEREIRO,
DECODE(MES, 'MARÇO', QUANTIDADE_CONSUMO,0) AS MARCO,
DECODE(MES, 'ABRIL', QUANTIDADE_CONSUMO,0) AS ABRIL,
DECODE(MES, 'MAIO', QUANTIDADE_CONSUMO,0) AS MAIO,
DECODE(MES, 'JUNHO', QUANTIDADE_CONSUMO,0) AS JUNHO,
DECODE(MES, 'JULHO', QUANTIDADE_CONSUMO,0) AS JULHO,
DECODE(MES, 'AGOSTO', QUANTIDADE_CONSUMO,0) AS AGOSTO,
DECODE(MES, 'SETEMBRO', QUANTIDADE_CONSUMO,0) AS SETEMBRO,
DECODE(MES, 'OUTUBRO', QUANTIDADE_CONSUMO,0) AS OUTUBRO,
DECODE(MES, 'NOVEMBRO', QUANTIDADE_CONSUMO,0) AS NOVEMBRO,
DECODE(MES, 'DEZEMBRO', QUANTIDADE_CONSUMO,0) AS DEZEMBRO
FROM (
select tuf.codigo || ' - ' || tuf.nome as filial,
        nvl(tfp.descricao, '> SEM FAMILIA CADASTRADA') as familia,
        TCP.CODIGO_PRODUTO AS PRODUTO,
        TRIM(TO_CHAR(TO_DATE(SUBSTR(TCP.PERIODO, 5,2), 'MM'), 'MONTH')) AS MES,
        sum(tcp.quantidade_consumo) as quantidade_consumo,        
        tfpf.codigo_fornecedor as fornecedor,
        tf.descricao as descricao_fornecedor,
        tfpf.percentual_fornecimento
from tiem_consumo_producao tcp
inner join teep_produto tp
  on (tp.codigo_empresa = tcp.codigo_empresa
  and tp.produto = tcp.codigo_produto)
inner join tutl_unidade_filial tuf
  on (tuf.codigo_empresa = tcp.codigo_empresa
  and tuf.codigo = tcp.codigo_unidade_filial)
left outer join teep_familia_produto tfp
  on (tfp.codigo_empresa = tcp.codigo_empresa
  and tfp.codigo = tp.codigo_familia)
inner join tsco_fornecedor_produto_filial tfpf
  on( tcp.codigo_empresa = tfpf.codigo_empresa
  and tcp.codigo_produto = tfpf.codigo_produto
  and tcp.codigo_unidade_filial = tfpf.codigo_unidade_filial)
inner join tsco_fornecedor tf
  on( tfpf.codigo_empresa = tf.codigo_empresa
  and tfpf.codigo_fornecedor = tf.codigo)
WHERE TCP.CODIGO_EMPRESA = 1
  and tfpf.percentual_fornecimento > 0 
  and to_number(substr(tcp.periodo, 0, 4)) between 2017 and 2017
group by tuf.codigo || ' - ' || tuf.nome, nvl(tfp.descricao, '> SEM FAMILIA CADASTRADA'), tcp.codigo_produto, TO_CHAR(TO_DATE(SUBSTR(TCP.PERIODO, 5,2), 'MM'), 'MONTH'), tfpf.codigo_fornecedor ,tf.descricao ,tfpf.percentual_fornecimento 
HAVING SUM(TCP.QUANTIDADE_CONSUMO) != 0
ORDER BY TUF.CODIGO || ' - ' || TUF.NOME, NVL(TFP.DESCRICAO, '> SEM FAMILIA CADASTRADA'), TCP.CODIGO_PRODUTO, TO_CHAR(TO_DATE(SUBSTR(TCP.PERIODO, 5,2), 'MM'), 'MONTH')
))
GROUP BY FILIAL, FAMILIA, PRODUTO, FORNECEDOR, DESCRICAO_FORNECEDOR, PERCENTUAL_FORNECIMENTO;