Ajuste query flash categoria
davinTI/app-dono-modulos/pipeline/head This commit looks good

This commit is contained in:
Sarah Magalhães
2026-06-02 17:39:24 -03:00
parent a7cf0fb023
commit 5fc50f7341
+30 -17
View File
@@ -1087,12 +1087,13 @@ where 1 = 0`,
OR (p.id_nodo_pai IS NOT NULL AND n.id_nodo_pai = p.id_nodo_pai) ) OR (p.id_nodo_pai IS NOT NULL AND n.id_nodo_pai = p.id_nodo_pai) )
AND (p.cod_empresa IS NULL OR n.cod_empresa = p.cod_empresa) AND (p.cod_empresa IS NULL OR n.cod_empresa = p.cod_empresa)
), ),
Vendas AS ( Vendas_Metas AS (
SELECT SELECT
f.id_nodo, f.codigo, f.nome, f.tipo_nodo, f.nivel, f.id_nodo, f.codigo, f.nome, f.tipo_nodo, f.nivel,
f.cod_empresa, f.ordem_exibicao, f.cod_empresa, f.ordem_exibicao,
r.data_referencia AS data, r.data_referencia AS data,
r.valor_venda AS venda r.valor_venda AS venda,
0 AS meta
FROM filhos f FROM filhos f
JOIN VERDEMAR.TB_FLASH_NODO_RESUMO_VENDA r ON r.id_nodo = f.id_nodo JOIN VERDEMAR.TB_FLASH_NODO_RESUMO_VENDA r ON r.id_nodo = f.id_nodo
CROSS JOIN Parametros p CROSS JOIN Parametros p
@@ -1103,43 +1104,55 @@ where 1 = 0`,
Agrupado AS ( Agrupado AS (
SELECT SELECT
v.id_nodo, v.id_nodo,
v.codigo, MAX(v.codigo) AS codigo,
MAX(v.nome) AS nome, MAX(v.nome) AS nome,
MAX(v.tipo_nodo) AS tipo_nodo, MAX(v.tipo_nodo) AS tipo_nodo,
MAX(v.nivel) AS nivel, MAX(v.nivel) AS nivel,
MAX(v.cod_empresa) AS cod_empresa, MAX(v.cod_empresa) AS cod_empresa,
MAX(v.ordem_exibicao) AS ordem_exibicao, MAX(v.ordem_exibicao) AS ordem_exibicao,
GROUPING(v.id_nodo) AS is_total, GROUPING(v.id_nodo) AS is_total,
-- Somatrios de Vendas por Perodo
SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes AND p.dt_ref THEN v.venda ELSE 0 END) AS v_mes, SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes AND p.dt_ref THEN v.venda ELSE 0 END) AS v_mes,
SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant THEN v.venda ELSE 0 END) AS v_mes_ant, SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant THEN v.venda ELSE 0 END) AS v_mes_ant,
SUM(CASE WHEN v.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant THEN v.venda ELSE 0 END) AS v_ano_ant SUM(CASE WHEN v.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant THEN v.venda ELSE 0 END) AS v_ano_ant,
FROM Vendas v
-- Somatrios de Metas por Perodo
SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes AND p.dt_ref THEN v.meta ELSE 0 END) AS m_mes,
SUM(CASE WHEN v.data BETWEEN p.dt_inicio_mes_ant AND p.dt_fim_mes_ant THEN v.meta ELSE 0 END) AS m_mes_ant,
SUM(CASE WHEN v.data BETWEEN p.dt_inicio_ano_ant AND p.dt_fim_ano_ant THEN v.meta ELSE 0 END) AS m_ano_ant
FROM Vendas_Metas v
CROSS JOIN Parametros p CROSS JOIN Parametros p
GROUP BY GROUPING SETS ((v.id_nodo, v.codigo), ()) GROUP BY GROUPING SETS ((v.id_nodo), ())
) )
SELECT SELECT
nome AS categoriaapp, nome AS nomeempresaapp, -- Nome do n
codigo AS cod_nodo, tipo_nodo AS canalapp, -- Tipo do n (ex: CATEGORIA)
tipo_nodo, cod_empresa AS cod_empresa, -- Cdigo da empresa associada ao n
nivel, is_total, -- Indicador de linha totalizadora
cod_empresa,
is_total,
v_mes AS venda_dia, -- Ms Atual e Metas Efetivas
m_mes AS meta_mes,
v_mes AS mes_atual, v_mes AS mes_atual,
0 AS meta_mes, (v_mes - m_mes) AS dif_mes_atual,
0 AS dif_mes_atual, CASE
0 AS variacao_atual, WHEN m_mes = 0 THEN 0
ELSE ROUND(((v_mes / m_mes) * 100) - 100, 2)
END AS variacao_atual,
-- Ms Anterior e Metas
m_mes_ant AS meta_mes_anterior,
v_mes_ant AS mes_anterior, v_mes_ant AS mes_anterior,
(v_mes - v_mes_ant) AS dif_mes_anterior, (v_mes - v_mes_ant) AS dif_mes_anterior,
ROUND(NVL((v_mes / NULLIF(v_mes_ant, 0)) * 100 - 100, 0), 2) AS variacao_mes_anterior, ROUND(NVL((v_mes / NULLIF(v_mes_ant, 0)) * 100 - 100, 0), 2) AS variacao_mes_anterior,
-- Ano Anterior e Metas
m_ano_ant AS meta_ano_anterior,
v_ano_ant AS ano_anterior, v_ano_ant AS ano_anterior,
(v_mes - v_ano_ant) AS dif_ano_anterior, (v_mes - v_ano_ant) AS dif_ano_anterior,
ROUND(NVL((v_mes / NULLIF(v_ano_ant, 0)) * 100 - 100, 0), 2) AS variacao_ano_anterior ROUND(NVL((v_mes / NULLIF(v_ano_ant, 0)) * 100 - 100, 0), 2) AS variacao_ano_anterior
FROM Agrupado FROM Agrupado
ORDER BY is_total, ordem_exibicao NULLS LAST, categoriaapp ORDER BY is_total, ordem_exibicao NULLS LAST, nomeempresaapp
` `
} }
}, },