Recent Posts
-
Grupo Whatsapp Qlik Sense
Grupo Qlik Sense Pessoal, vamos Criar grupo Whatsapp para compartilhar informações, ajudar e ser ajudados Quem quiser a só me enviar o DDD+celular qu... Show MoreGrupo Qlik Sense
Pessoal, vamos Criar grupo Whatsapp para compartilhar informações, ajudar e ser ajudados
Quem quiser a só me enviar o DDD+celular que eu adiciono no Grupo ou no email pablokerne@hotmail.com
Abcs,
Pablo Kerne
Consultor de Gestão
-
Relatório AD-HOC
Fala pessoal, tudo beleza?Afinal, o que é e como construir um relatório ad-hoc?Em primeiro lugar precisamos entender o termo ad-hoc. Sempre que utiliz... Show MoreFala pessoal, tudo beleza?
Afinal, o que é e como construir um relatório ad-hoc?
Em primeiro lugar precisamos entender o termo ad-hoc.
Sempre que utilizamos o termo ad-hoc, estamos se referindo a algo temporário e que se destina para um fim específico.
Neste tipo de relatório, geralmente, construímos um tabelão em que o usuário seleciona as dimensões e expressões que necessitam visualizar. Engraçado é a palavra temporário, pois se tratando de uma ferramenta super poderosa um simples tabelão não pode ser vinculado ao BI de uma grande corporação.
Opinião: Sabemos que isso não é verdade. O layout é importante? Muito, mas o objetivo principal é conseguir atender as necessidades do cliente da melhor maneira possível. Se para atender essa necessidade eu preciso desenvolver apenas tabelas, então bora :D!Como falado anteriormente, podemos desenvolver o relatório ad-hoc apenas dentro de um tabelão ou então fazer o próprio usuário escolher o tipo de gráfico. Para esse primeiro post do assunto, irei demonstrar apenas a funcionalidade do usuário selecionar as dimensões e expressões que pretende visualizar dentro de um tabelão.
Em primeiro lugar precisamos criar um campo com as possíveis dimensões e outro com as expressões.
IMPORTANTE: A nomenclatura desse campo deve respeitar o prefixo utilizado na função HidePrefix, pois estes campos não deverão estar disponíveis para nossos usuários desenvolvedores (com licença named).
Vamos para o script!
1° Passo) Crie uma aba chamada AD-HOC e crie os campos (no meu exemplo vou utilizar INLINE, mas você pode ficar livre para colocar esses campos em planilha ou dentro de uma tabela em seu BD).
OBS: O conteúdo dentro do campo de dimensão e/ou expressão não necessariamente precisam possuir o mesmo nome da dimensão que será utilizada na tabela.
SET HidePrefix = '_';
//Tabela com os campos de dimensões
Dimensões:
LOAD * INLINE [
_dimensao
Dimensão1
Dimensão2
Dimensão3
Dimensão4
Dimensão5
Dimensão6
Dimensão7
Dimensão8
];//Tabela com expressões
Expressões:
LOAD * INLINE [
_expressao
Expressão1
Expressão2
];2° Passo) Agora precisamos criar um gráfico do tipo Tabela Simples ou Tabela Dinâmica.
3° Passo) Após selecionar o tipo de gráfico, adicione a seguinte condição de cálculo, conforme imagem:
Condição a ser preenchida: GetSelectedCount(_dimensao) > 0 and GetSelectedCount(_expressao) > 0
Traduzindo a expressão: Serão exibidos os dados do gráfico somente se houver, pelo menos, uma dimensão e uma expressão.
4° Passo) Agora precisamos adicionar as dimensões do gráfico. Note que essas dimensões não são as criadas na tabela Dimensões no primeiro passo.
Após adicionar cada uma dessas dimensões, devemos habilitar a condição "Permitir Condicional" e colocar a condição conforme a imagem abaixo:
Condição a ser preenchida: SubStringCount(CONCAT('|'&_dimensao,'|') & '|', '|Dimensão1|')
Traduzindo a expressão: Estou concatenando todos os possíveis valores do campo _dimensao e estou procurando pela string |Dimensão1|, ou seja, se o usuário selecionou o valor Dimensão1, então este campo será exibido em nosso relatório. Por que estou utilizando o pipe "|" para concatenar e para buscar a string? Pois se houver um campo Dimensão1 e um Dimensão11, então o delimitador pipe irá diferencia-lo na busca.
5° Passo) É necessário fazer essa ação para cada dimensão que o usuário pode selecionar.
6° Passo) Para as expressões deve-se habilitar o checkbox "Condicional" e fazer o mesmo, porém agora utilizando o campo _expressao na condicional, conforme imagem:
Condição a ser preenchida: SubStringCount(CONCAT('|'&_expressao,'|') & '|', '|Expressão1|')
7° Passo) Disponibilizar para seleção os campos _dimensao e _expressao.
8° Passo) Perfumarias!
Para fazer o download da aplicação de exemplo clique aqui.
Conclusão: Eu gosto muito de colocar um relatório desse tipo nos projetos, pois o usuário fica com a liberdade de criar um gráfico de acordo com o seu desejo (dentro das dimensões e expressões pré-estabelecidas).
O cuidado que precisamos ter é limitar a quantidade de dados a serem exibidos se possibilitarmos a visualização de informações de baixo nível.
É isso pessoal!
Na próxima semana tem mais
-
Remover botão de confirmar seleção em mapa
Boa tarde pessoal,Tenho um dashboard com um mapa do Brasil que, ao clicar num Estado, ele faz um drill down e exibe os municípios desse Estado. Porém,... Show MoreBoa tarde pessoal,
Tenho um dashboard com um mapa do Brasil que, ao clicar num Estado, ele faz um drill down e exibe os municípios desse Estado. Porém, eu gostaria de remover o botão de confirmação da seleção quando seleciono algum Estado, de modo que selecionasse o Estado só pelo clique do mouse. Sabem dizer se isto é possível?Desde já agradeço a atenção.
-
Coluna com diferença das duas colunas anteriores.
Bom dia, estou criando indicadores para diretoria, coloquei dois meses nas colunas e as linhas com os indicadores, preciso agora gerar uma coluna no ... Show MoreBom dia, estou criando indicadores para diretoria, coloquei dois meses nas colunas e as linhas com os indicadores, preciso agora gerar uma coluna no ficnal com a diferença entre essas duas colunas, estou usando tabela dinâmica, mas não tenho achado como fazer isso. Alguma dica? Obs. Sou novo no Qlik
-
Qliksense - Horário do QMC está divergindo com o horário apresentado de running ...
Boa tarde! Estou com um ambiente em que o QMC está com as tarefas rodando no horário de brasília e com a description das tasks e os logs com horário g... Show MoreBoa tarde! Estou com um ambiente em que o QMC está com as tarefas rodando no horário de brasília e com a description das tasks e os logs com horário gtm + 3. Como fazer para configurar?
Obs.: As tasks estão com a configuração "Permanent standard time" e o servidor está com fuso de brasília.
-
Dados Acumulado no Sense
Caros,Alguém já precisou acumular dados no Gráfico no Sense? Já tentei utilizando RangSum com Above e não consegui. A estrutura é a que está em anexo.... Show MoreCaros,
Alguém já precisou acumular dados no Gráfico no Sense? Já tentei utilizando RangSum com Above e não consegui. A estrutura é a que está em anexo... a sintaxe utilizada para tentar fazer o acumulado foi:
RangeSum(Sum({1<[VENDA_APLICACAO.CODNOMEFORNECEDOR] = $::[VENDA_APLICACAO.CODNOMEFORNECEDOR],
[VENDA_APLICACAO.LOJA] = $::[VENDA_APLICACAO.LOJA],
[VENDA_APLICACAO.ANO] = {"<=$(vMaxAno)"},
[VENDA_APLICACAO.MES] = $:: [VENDA_APLICACAO.MES],
[VENDA_APLICACAO.APLICACAO] = $::[VENDA_APLICACAO.APLICACAO]>}[VENDA_APLICACAO.LIQUIDO]),
Above(
Sum({1<[VENDA_APLICACAO.CODNOMEFORNECEDOR] = $::[VENDA_APLICACAO.CODNOMEFORNECEDOR],
[VENDA_APLICACAO.LOJA] = $::[VENDA_APLICACAO.LOJA],
[VENDA_APLICACAO.ANO] = {"<=$(vMaxAno)"},
[VENDA_APLICACAO.MES] = $:: [VENDA_APLICACAO.MES],
[VENDA_APLICACAO.APLICACAO] = $::[VENDA_APLICACAO.APLICACAO]>}[VENDA_APLICACAO.LIQUIDO])
)
Acredito estar faltando algum Agrr ou algo a mais, pois sei que no gráfico ao exportar para excell as linhas são exibidas como mes, ano, dia e valor. Assim, ao usar o Above, não sei se ele vai entender as linhas de acordo com as dimensões (Mes e Ano).
-
Publicações de MARIO SOARES | Documentos, Aplicativos e Arquivos
Caros amigos; Com o propósito de organizar e sumarizar minhas publicações; Segue abaixo a relação de Documentos, Aplicativos e Arquivos no intuito de ... Show MoreCaros amigos;
Com o propósito de organizar e sumarizar minhas publicações;
Segue abaixo a relação de Documentos, Aplicativos e Arquivos no intuito de apoiar a comunidade:
- Documentos:
Nome/Link Descrição Guia Técnico | Ambiente, Segurança e Conexões Qlik Sense Enterprise SaaS Guia técnico sobre conexões de dados com o Qlik Sense Enterprise SaaS, incluindo aspectos de ambiente, segurança e diagramas, para ajudar no entendimento e a viabilidade de projetos com o Qlik Cloud.
Guia Técnico | Configuração Qlik Sense Enterprise para certificado digital e Qlik Sense Mobile Guia técnico com os procedimentos (passo a passo) de como configurar o sistema e o Qlik Sense Enterprise para permitir acesso interno e externo mais seguro através da implantação adequada do SSL utilizando certificado emitido por uma autoridade certificadora raiz confiável, viabilizando também acesso seguro pelo Qlik Sense Mobile, então teremos conexão com o protocolo https validado pelos navegadores (cadeado na url).
Somar intervalo de tempo/produção dos recursos | Período útil Necessário somar o tempo de inatividade dos recursos no período de produção útil, desconsiderando feriados nacionais e horário de almoço e apresentar a quantidade de dias das ocorrências. Obs.: Serve para medir o tempo de trabalho (H/H).
Transposição/Inversão de colunas para linhas | CrossTable (Tabela Cruzada) Necessário alterar a posição dos campos/atributos que representam períodos de tempo para registros/tuplas, no intuito de servir de forma mais simples como dimensão/filtro.
Incluindo saldo/acumulado via Script ou via Expressão Necessário apresentar o saldo/acumulado discriminado por data e segmentado pelo Título em uma tabela.
Adicionando/Preenchendo intervalo de datas nos eventos Necessário gerar os intervalos de datas com os critérios de início e final dos eventos.
Concatenar linhas/registros via Script ou via Expressão Necessário unificar/concatenar os registros COD e NOME apresentados nas linhas de forma não repetir.
Necessário separar as informações que se apresentam agregadas/concatenadas por um delimitador nos registros, para serem apresentadas em vários registros de forma desagregada e assim o campo poder ser utilizado de forma homogênea em filtros e dimensões. Obs.: A técnica pode ser utilizada para viabilizar associações de campos que estão com registros agrupados/concatenados como códigos de cadastros e nº de contratos, por exemplo.
Diagrama para ilustrar exemplo de ETL com Qlik Sense ou QlikView, utilizando DW em arquivos com QVD.
- Aplicativos:
Nome/Link Descrição Qlik Sense App Análises Arquivo Parquet Poderão utilizar o app para efeito de estudo, com comparativos referente ao tamanho, velocidade de leitura e gravação utilizando arquivo Parquet direto no Qlik Sense, poderão modificar a tabela base via script para novos experimentos.
Qlik Sense App Análises de Investimentos Poderão utilizar o app para auxiliar nas análises de Ações e também para observar como construir um processo de Web Scraping através do Qlik.
Z_Tratando_aggr_reg_grao_dif.qvf Agrupando registros com dimensões de granularidades diferentes.
Z_Tratando_corte_datas.qvf DRE com mês de corte.
- Arquivos:
Nome/Link Descrição Datas Comemorativas - Feriados Nacionais - Brasil.xls Relação de feriados nacionais, ano 2001 - 2078.
Por:
- Mario Sergio Medeiros Soares
- Linkedin: https://br.linkedin.com/in/mariosergioti
- Qlik: https://community.qlik.com/people/mario.sergio.ti
-
Filtro de data dinâmico
Bom dia a todos,criei um aplicativo no Qlik para analise de vendas mensais, porém, meu mês é considerado como começando a partir do dia 21 e terminand... Show MoreBom dia a todos,
criei um aplicativo no Qlik para analise de vendas mensais, porém, meu mês é considerado como começando a partir do dia 21 e terminando no dia 20 do próximo mês. Por exemplo, o mês de Fevereiro começa a ser contabilizado em 21/01 e termina em 20/02. Já trouxe o calendário nesse formato para o script e criei duas variáveis, vDataAnalise (=Date(AddMonths(MakeDate(Year(Today()), Month(Today()), 20), 0), 'DD/MM/YYYY')) e vDataAnaliseMêsPassado (=Date(AddMonths(MakeDate(Year(Today()), Month(Today()), 21), -1), 'DD/MM/YYYY')), mas agora preciso criar um filtro que me permita filtrar essas datas de forma dinâmica. Quero selecionar, por exemplo, o mês de Novembro do ano passado e quero que o período retornado na minha tabela seja de 21/10/24 até 20/11/24. No momento o meu filtro pega apenas as datas do mês selecionado, sem considerar o período. Alguma sugestão do que devo fazer?
Agradeço desde já. -
Section Acess - Acesso duplo para mesmo usuário
Pessoal, Estou usando o section acess para restringir o acesso de dois campos (aqui ilustrados como Campo1 e Campo2). Preciso fazer uma liberação "du... Show MorePessoal,
Estou usando o section acess para restringir o acesso de dois campos (aqui ilustrados como Campo1 e Campo2).
Preciso fazer uma liberação "dupla" para o usuário USER1:
- Se Campo2 = 'PESSOAL', ele pode ver todos os conteúdos do Campo1;
- No caso de Campo1 = 'CONTA A', o usuário só poderá ver o tipo 'OPERACIONAL' no Campo2.
Abaixo o script que utilizei, porém realizando os testes, o USER1 continua vendo todas as informações.
Section Access;
Load * inline [
ACCESS, USERID, OMIT, CAMPO1, CAMPO2
ADMIN, INTERNAL\SA_SCHEDULER,,*
ADMIN, USER_ADMIN,,'CONTA A',*
ADMIN, USER_ADMIN,,'CONTA B',*
ADMIN, USER_ADMIN,,*,OPERACIONAL
ADMIN, USER_ADMIN,,*,PESSOALUSER, USER1,,*,PESSOAL
USER, USER1,,CONTA A,OPERACIONAL
];SECTION Application;
Dados_teste:
load
*
inline
[
CAMPO1, CAMPO2, VALOR1
CONTA A, OPERACIONAL, 10
CONTA A, PESSOAL, 20
CONTA B, OPERACIONAL, 15
CONTA B, PESSOAL, 25
]; -
Regex em Qliksense
Boa tarde, Existe a possibilidade de se utilizar regex em qliksense? na internet só vi para qlikview. Encontrei esse link sobre Regex Connector, mas ... Show MoreBoa tarde,
Existe a possibilidade de se utilizar regex em qliksense? na internet só vi para qlikview. Encontrei esse link sobre Regex Connector, mas não informações de como instalar ou utilizar.
-
Acesso Negado - Reload Button
Bom Dia!Tenho uma aplicação Qlik Sense, que utiliza a extensão Reload Button, que funciona perfeitamente no Desktop.Fiz a importação e publicação no s... Show MoreBom Dia!
Tenho uma aplicação Qlik Sense, que utiliza a extensão Reload Button, que funciona perfeitamente no Desktop.
Fiz a importação e publicação no servidor, mas ao fazer a recarda dos dados, ao final da execução dá erro de ACESSO NEGADO.
Eu acredito que seja alguma configuração de acesso para alterar a aplicação, já que após fazer a recarga o Qlik Sense salva os dados na aplicação, mas não sei como resolver.
Obrigada!
-
É possível filtra por duas dimensões simultaneamente, sendo o valor de uma OU a ...
Caros, é possível filtrar por duas dimensões sendo Segmento/Indústria ou Descr.CNAE? Exemplo: Quero que me retorne todos os registros com o Segmento "... Show MoreCaros, é possível filtrar por duas dimensões sendo Segmento/Indústria ou Descr.CNAE?
Exemplo: Quero que me retorne todos os registros com o Segmento "Saude: Saude Animal" ou o Descr. CNAE "Atividades veterinarias", é possível?
-
Calcular valor hora trabalhada
Estou precisando calcular o valor hora trabalhada da seguinte forma:HORA | VALOR HORA | TOTAL A PAGAR02:30 X 60,00 = 150,00Vej... Show MoreEstou precisando calcular o valor hora trabalhada da seguinte forma:
HORA | VALOR HORA | TOTAL A PAGAR
02:30 X 60,00 = 150,00
Veja abaixo uma tabela com os valores das horas e o calculo delas:
Estou usando essa fórmula atualmente:
=Coluna3 * VLRHORA, mas não está dando certo.
Onde a coluna 3 ficam as horas que excederam do contrato e que devo multiplicar pelo valor hora contratado.
-
Before - Tabla Pivotante
Buenas tardes Comunidad: Estoy tratando de determinar la recompra de un cliente para lo cual hice lo siguiente Obtener el dato de la columna anterior ... Show MoreBuenas tardes Comunidad:
Estoy tratando de determinar la recompra de un cliente para lo cual hice lo siguiente
Obtener el dato de la columna anterior de una tabla pivotante; sin embargo cuando la columna anterior no presenta dato, este se salta una columna mas, cuando debería entregarme el valor '0' o nulo
Por ejemplo, en la primera fila para la columna 202407 en la columna 'Ant.' debería entregarme el valor de 0; sin embargo me entrega el valor de de 202405 que es 1 (salto una columna adicional)
Estoy aplicando para la columna 'Ant'
Before ( Count(Efectivas_cont) )
Agradecería su ayuda, a la espera de sus comentarios
PD. Estoy con el check de presentar valores nulos
Atte.
CarlosR
-
Instalação do QVSManager
Boa noite a todosEstou procurando a instalação do QVSManager. O meu problema é que para mim o post com o QVSCALManager aparece bloqueado.Alguém tem a ... Show MoreBoa noite a todos
Estou procurando a instalação do QVSManager. O meu problema é que para mim o post com o QVSCALManager aparece bloqueado.
Alguém tem a ferramenta para disponibilizar?
Obrigado!
-
Sua empresa fala a Língua dos Dados e Inteligência Artificial (IA)?
Vamos entender como está o cenário global da literacia em dados com a Inteligência Artificial com o Cesar Ripari, responsável por promover o Programa ... Show MoreVamos entender como está o cenário global da literacia em dados com a Inteligência Artificial com o Cesar Ripari, responsável por promover o Programa Qlik de Alfabetização de Dados; e também, como a literacia em dados e a Inteligência Artificial têm impactado as organizações, na prática, com Priscila Papazissis, Head de Analytics na Vallourec e com passagens por empresas, como: Localiza&Co, Unidas, Unimed/BH, entre outras.
Link para inscrição: https://www.meetup.com/qlik-meetup-recife/events/301919597/ -
SOMASES
Olá, Preciso criar um novo campo a partir de uma somases, que respeite o Cod Centro e o mês, mas sem especificar entre ' ' os valores. Obrigado.... Show MoreOlá,
Preciso criar um novo campo a partir de uma somases, que respeite o Cod Centro e o mês, mas sem especificar entre ' ' os valores.
Obrigado.
-
Servidor Qlik perdeu as chaves de autorização
Como entendi, meu servidor não está recebendo confirmação dos servidores de autorização do Qlik de que minhas chaves foram adquiridas legalmente e est... Show MoreComo entendi, meu servidor não está recebendo confirmação dos servidores de autorização do Qlik de que minhas chaves foram adquiridas legalmente e estão ativas. Alguém já teve esse problema? O fato é que o Qlik oficialmente deixou o nosso país e abandonou todos aqueles que compraram o Qlik sem suporte. Alguém já enfrentou um problema semelhante?
-
O Qlik Armazena um texto como número do campo Select
Olá, Estou com um problema, meus dados de texto estão sendo gerados como número, na origem do dado está como texto, segue exemplo, Cod = '0000000044',... Show MoreOlá,
Estou com um problema, meus dados de texto estão sendo gerados como número, na origem do dado está como texto, segue exemplo, Cod = '0000000044',
Select
Cod
from base;
Me retorna '044'
Quando utilizo:
SUBSTR(Cod, 1, 8 ) "Cod_1" = Me Retorna parte do número correto '0000000'
SUBSTR(Cod, 9, 2) "Cod_2" = E o '44'
Mas quando faço a concatenação, me retorna a mesma coisa de quando faço a carga normal '044'.
Alguém consegue me auxiliar por favor.
Obrigado.
PS: Editei o post pois o 8 e ) estava gerando um emoticon 8).
-
puxar um SQL pronto para o Qlikview com números decimais e não inteiros!!
Bom dia,estou enfrentando um problema relacionado números inteiros, tenho uma base de dados com um SQL pronto de outros software, quando eu realizo a ... Show MoreBom dia,
estou enfrentando um problema relacionado números inteiros, tenho uma base de dados com um SQL pronto de outros software, quando eu realizo a busca ele retornar as informações referente a todos os números de forma decimal, entretanto em outros Software, exemplo, PL, no Excel e no Power BI, porém quando eu executo o Script no Qlikview ele me retornar os valores de 3 colunas em números inteiro, entretanto eu preciso que me retorne em valores com casas decimais
enfatizando que já realizei testes com esse parâmetro
SET NumFormat='#.##0,00';
e varios ouros formatos, porém ele não me retornar com valores decimais de nenhuma forma,
por fim para exemplificar, quero transformar o meu arquivo QVW em um QVD para depois conseguir transformar em CSV, porém quando eu realizo o ultimo extrator no CSV ele fica com os números inteiros, já tentei inúmeras formar, porém não consigo solucionar esse problema
alguém poderia me ajudar,
segue o SQL com os parâmetrosSELECT
fatura,
CGC,
nome,
m.ano,
m.mes,
SUM(m.margem_calculada) / SUM(m.valor_total) AS perc_mc_total,
SUM(m.margem_apurada) / SUM(m.valor_total) AS perc_mc_apurada, sum (valor_total) valor_total,
sum(m.margem_apurada) margem_apurada
FROM (
SELECT
TO_NUMBER(TO_CHAR(n.dt_emissao, 'yyyy')) AS ano,
TO_NUMBER(TO_CHAR(n.dt_emissao, 'mm')) AS mes,
n.numreg,
cgc,
nome,
fatura,
n.valor_total,
SUM(n.margem_calculada) AS margem_calculada,
SUM(n.margem_apurada) AS margem_apurada
FROM (
SELECT
a.numreg,
a.fatura,
a.cgc,
f.nome,
a.operacao,
a.dt_emissao,
a.valor_total,
b.produto,
b.cor,
b.gtam,
e.representante,
(NVL(b.qtde1, 0) + NVL(b.qtde2, 0) + NVL(b.qtde3, 0) +
NVL(b.qtde4, 0) + NVL(b.qtde5, 0) + NVL(b.qtde6, 0) +
NVL(b.qtde7, 0) + NVL(b.qtde8, 0) + NVL(b.qtde9, 0) +
NVL(b.qtde10, 0) + NVL(b.qtde11, 0) +
NVL(b.qtde12, 0) + NVL(b.qtdeu, 0)) AS qtde,
e.preco_liquido,
e.perc_mc,
e.perc_mc_apr,
(NVL(b.qtde1, 0) + NVL(b.qtde2, 0) + NVL(b.qtde3, 0) +
NVL(b.qtde4, 0) + NVL(b.qtde5, 0) + NVL(b.qtde6, 0) +
NVL(b.qtde7, 0) + NVL(b.qtde8, 0) + NVL(b.qtde9, 0) +
NVL(b.qtde10, 0) + NVL(b.qtde11, 0) +
NVL(b.qtde12, 0) + NVL(b.qtdeu, 0)) * e.preco_liquido *
e.perc_mc / 100 AS margem_calculada,
(NVL(b.qtde1, 0) + NVL(b.qtde2, 0) + NVL(b.qtde3, 0) +
NVL(b.qtde4, 0) + NVL(b.qtde5, 0) + NVL(b.qtde6, 0) +
NVL(b.qtde7, 0) + NVL(b.qtde8, 0) + NVL(b.qtde9, 0) +
NVL(b.qtde10, 0) + NVL(b.qtde11, 0) +
NVL(b.qtde12, 0) + NVL(b.qtdeu, 0)) * e.preco_liquido *
e.perc_mc_apr / 100 AS margem_apurada
FROM vestis21.movfat a
INNER JOIN vestis21.pedfat b ON a.numreg = b.numreg_movfat
INNER JOIN vestis21.cadmat c ON b.produto = c.produto
INNER JOIN vestis21.linha d ON c.linha = d.linha
INNER JOIN vestis21.v_vendas_1 e ON b.pedido = e.numero
AND b.produto = e.produto
AND b.gtam = e.gtam
AND b.cor = e.cor
INNER JOIN vestis21.parceiro f ON a.cgc = f.cgc
WHERE a.prod_mat = 'P'
AND NVL(e.expurgar, 'F') = 'F'
AND vestis21.financeiro.PossuiDuplicata(a.numreg) = 'T'
AND d.negocio = 'F'UNION ALL
SELECT
a.numreg,
a.fatura,
a.cgc,
f.nome,
a.operacao,
a.dt_emissao,
a.valor_total,
b.produto,
b.cor,
b.gtam,
e.representante,
(NVL(b.qtde1, 0) + NVL(b.qtde2, 0) + NVL(b.qtde3, 0) +
NVL(b.qtde4, 0) + NVL(b.qtde5, 0) + NVL(b.qtde6, 0) +
NVL(b.qtde7, 0) + NVL(b.qtde8, 0) + NVL(b.qtde9, 0) +
NVL(b.qtde10, 0) + NVL(b.qtde11, 0) +
NVL(b.qtde12, 0) + NVL(b.qtdeu, 0)) AS qtde,
e.preco_liquido,
e.perc_mc,
e.perc_mc_apr,
(NVL(b.qtde1, 0) + NVL(b.qtde2, 0) + NVL(b.qtde3, 0) +
NVL(b.qtde4, 0) + NVL(b.qtde5, 0) + NVL(b.qtde6, 0) +
NVL(b.qtde7, 0) + NVL(b.qtde8, 0) + NVL(b.qtde9, 0) +
NVL(b.qtde10, 0) + NVL(b.qtde11, 0) +
NVL(b.qtde12, 0) + NVL(b.qtdeu, 0)) * e.preco_liquido *
e.perc_mc / 100 AS margem_calculada,
(NVL(b.qtde1, 0) + NVL(b.qtde2, 0) + NVL(b.qtde3, 0) +
NVL(b.qtde4, 0) + NVL(b.qtde5, 0) + NVL(b.qtde6, 0) +
NVL(b.qtde7, 0) + NVL(b.qtde8, 0) + NVL(b.qtde9, 0) +
NVL(b.qtde10, 0) + NVL(b.qtde11, 0) +
NVL(b.qtde12, 0) + NVL(b.qtdeu, 0)) * e.preco_liquido *
e.perc_mc_apr / 100 AS margem_apurada
FROM vestis05.movfat a
INNER JOIN vestis05.pedfat b ON a.numreg = b.numreg_movfat
INNER JOIN vestis05.cadmat c ON b.produto = c.produto
INNER JOIN vestis05.linha d ON c.linha = d.linha
INNER JOIN vestis05.v_vendas_1 e ON b.pedido = e.numero
AND b.produto = e.produto
AND b.gtam = e.gtam
AND b.cor = e.cor
INNER JOIN vestis05.parceiro f ON a.cgc = f.cgc
WHERE a.prod_mat = 'P'
AND NVL(e.expurgar, 'F') = 'F'
AND vestis05.financeiro.PossuiDuplicata(a.numreg) = 'T'
AND d.negocio = 'F'
) n
GROUP BY TO_NUMBER(TO_CHAR(n.dt_emissao, 'yyyy')), TO_NUMBER(TO_CHAR(n.dt_emissao, 'mm')), fatura, cgc, nome, n.numreg, n.valor_total
) m
GROUP BY fatura, CGC, nome, m.ano, m.mes;
Por fim as colunas que precisam ser realizadas em numero decimal são
PERC_MC_TOTAL
PERC_MC_APURADA
VALOR_TOTAL
MARGEM_APURADA
Muito obrigado!!