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

This commit is contained in:
Sarah Magalhães
2026-06-03 09:54:17 -03:00
parent 7992c8d3c7
commit 8a9c439829
+19 -15
View File
@@ -1058,11 +1058,11 @@ where 1 = 0`,
return { return {
sql: /*sql*/` sql: /*sql*/`
WITH Parametros_Base AS ( WITH Parametros_Base AS (
SELECT SELECT
TO_DATE(${args.data_venda}, 'YYYY-MM-DD') AS dt_ref, TO_DATE(${args.data_venda}, 'YYYY-MM-DD') AS dt_ref,
${args.codigo_categoria_pai} AS id_nodo_pai, ${args.codigo_categoria_pai} AS id_nodo_pai,
${args.cod_empresa} AS cod_empresa ${args.cod_empresa} AS cod_empresa
FROM DUAL FROM DUAL
), ),
Parametros AS ( Parametros AS (
SELECT SELECT
@@ -1074,7 +1074,7 @@ where 1 = 0`,
ADD_MONTHS(dt_ref, -12) AS dt_fim_ano_ant, ADD_MONTHS(dt_ref, -12) AS dt_fim_ano_ant,
id_nodo_pai, id_nodo_pai,
cod_empresa cod_empresa
FROM Parametros_Base FROM Parametros_Base
), ),
filhos AS ( filhos AS (
SELECT SELECT
@@ -1103,14 +1103,18 @@ where 1 = 0`,
), ),
Agrupado AS ( Agrupado AS (
SELECT SELECT
v.id_nodo, -- Quando NÃO tem filtro de empresa: agrupa por CODIGO (consolida várias empresas)
MAX(v.codigo) AS codigo, -- Quando TEM filtro de empresa: agrupa por ID_NODO (cada empresa separada)
MAX(v.nome) AS nome, v.codigo AS codigo,
MAX(v.tipo_nodo) AS tipo_nodo, MAX(v.nome) AS nome,
MAX(v.nivel) AS nivel, MAX(v.tipo_nodo) AS tipo_nodo,
MAX(v.cod_empresa) AS cod_empresa, MAX(v.nivel) AS nivel,
MAX(v.ordem_exibicao) AS ordem_exibicao, CASE WHEN p.cod_empresa IS NULL
GROUPING(v.id_nodo) AS is_total, THEN NULL
ELSE MAX(v.cod_empresa)
END AS cod_empresa,
MAX(v.ordem_exibicao) AS ordem_exibicao,
GROUPING(v.codigo) AS is_total,
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,
@@ -1121,7 +1125,7 @@ where 1 = 0`,
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 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 FROM Vendas_Metas v
CROSS JOIN Parametros p CROSS JOIN Parametros p
GROUP BY GROUPING SETS ((v.id_nodo), ()) GROUP BY GROUPING SETS ((v.codigo, p.cod_empresa), ())
) )
SELECT SELECT
nome AS nomeempresaapp, nome AS nomeempresaapp,