Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, bom dia!
Preciso rodar uma consulta do SQL no script do qlik e nao estou conseguindo. Nao sei onde estou errando. Alguem poderia me ajudar.
Segue script:
SELECT DISTINCT
CONVERT(VARCHAR,vd.DT_VD,103)AS "Data",
vd.CD_FILIAL AS "Filial",
SUM(vd.VLR_PMC_TOTAL) AS "VlrPMC",
SUM(vd.VLR_DESC_OFERTA) AS "VlrDescOferta",
SUM((vd.VLR_IT)*QT_IT) AS "VlrVenda",
SUM(vd.VLR_DESC_IT) AS "VlrDescItens",
SUM(vd.VLR_DESC_VERBA) AS "VlrDescVerba",
SUM(vd.VLR_DESC_IT) AS "VlrDescTotalItens",
SUM(vd.VLR_DESC) AS "VlrDesc",
SUM(vd.VLR_DESC_IT+vd.VLR_DESC_VERBA+vd.VLR_DESC_OFERTA)/ROUND(SUM(vd.VLR_PMC_TOTAL),6)*100 AS "%DescontoFinal",
SUM(vd.TOT_IT) AS "ValorLiquido",
COUNT(DISTINCT vd.NR_ECF) AS "QtdeVendas",
SUM(vd.QT_IT) AS "QtdeItem",
SUM(vd.QT_IT * vd.VLR_CUSTO)AS "VlrCusto",
SUM(vd.TOT_IT)-SUM(vd.QT_IT * vd.VLR_CUSTO)AS "VlrMargemBruta",
(SUM(vd.TOT_IT)-SUM(vd.QT_IT * vd.VLR_CUSTO))/SUM(vd.TOT_IT)*100 AS "%MargemBruta",
SUM(vd.TOT_IT)/COUNT(DISTINCT vd.NR_ECF)AS "TickeMedio",
SUM(CASE
WHEN mix.CD_ARV_MERC_LINHA IN(10,100,109,110) THEN vd.TOT_IT
ELSE 0
END )AS 'Genéricos',
SUM(CASE
WHEN mix.CD_ARV_MERC_LINHA IN(1,2,9,101,107) THEN vd.TOT_IT
ELSE 0
END )AS 'Medicamentos',
SUM(CASE
WHEN mix.CD_ARV_MERC_LINHA IN(3,6,8,99,102,103,108) THEN vd.TOT_IT
ELSE 0
END )AS 'Não Medicamentos'
FROM
V_PDV_VD_IT vd WITH (NOLOCK)
INNER JOIN V_EST_PROD_CPL_ARV_MERCADOLOGICA mix WITH (NOLOCK) ON
vd.CD_EMP = mix.CD_EMP
and vd.CD_FILIAL = mix.CD_FILIAL
and vd.CD_PROD = mix.CD_PROD
WHERE
vd.CD_EMP = 1
AND vd.CD_FILIAL BETWEEN 1 AND 998
AND NOT vd.CD_FILIAL = 99
AND NOT vd.CD_FILIAL BETWEEN 300 AND 997
AND vd.DT_VD between '20130601' AND '20130617'
AND NOT mix.CD_ARV_MERC_LINHA = 105
GROUP BY
vd.DT_VD,
vd.CD_FILIAL
Para o QlikView reconhecer uma expressão sql você tem que primeiro criar uma tabela QlikView, ou seja,
<Nome da tabela>:
Expressão Sql
;
Para iniciar uma expressão sql você pode colocar diretamente o Select, ou utilizar
sql Select...
Estou mandando um arquivo QVW como exemplo para você entender melhor.
Está nomeando a tabela antes do Select João?
Ex:
NomeDaTabela:
SELECT DISTINCT
CONVERT(VARCHAR,vd.DT_VD,103)AS "Data",
vd.CD_FILIAL AS "Filial",
SUM(vd.VLR_PMC_TOTAL) AS "VlrPMC",
SUM(vd.VLR_DESC_OFERTA) AS "VlrDescOferta",
SUM((vd.VLR_IT)*QT_IT) AS "VlrVenda",
SUM(vd.VLR_DESC_IT) AS "VlrDescItens",
SUM(vd.VLR_DESC_VERBA) AS "VlrDescVerba",
SUM(vd.VLR_DESC_IT) AS "VlrDescTotalItens",
SUM(vd.VLR_DESC) AS "VlrDesc",
SUM(vd.VLR_DESC_IT+vd.VLR_DESC_VERBA+vd.VLR_DESC_OFERTA)/ROUND(SUM(vd.VLR_PMC_TOTAL),6)*100 AS "%DescontoFinal",
SUM(vd.TOT_IT) AS "ValorLiquido",
COUNT(DISTINCT vd.NR_ECF) AS "QtdeVendas",
SUM(vd.QT_IT) AS "QtdeItem",
SUM(vd.QT_IT * vd.VLR_CUSTO)AS "VlrCusto",
SUM(vd.TOT_IT)-SUM(vd.QT_IT * vd.VLR_CUSTO)AS "VlrMargemBruta",
(SUM(vd.TOT_IT)-SUM(vd.QT_IT * vd.VLR_CUSTO))/SUM(vd.TOT_IT)*100 AS "%MargemBruta",
SUM(vd.TOT_IT)/COUNT(DISTINCT vd.NR_ECF)AS "TickeMedio",SUM(CASE
WHEN mix.CD_ARV_MERC_LINHA IN(10,100,109,110) THEN vd.TOT_IT
ELSE 0
END )AS 'Genéricos',SUM(CASE
WHEN mix.CD_ARV_MERC_LINHA IN(1,2,9,101,107) THEN vd.TOT_IT
ELSE 0
END )AS 'Medicamentos',SUM(CASE
WHEN mix.CD_ARV_MERC_LINHA IN(3,6,8,99,102,103,108) THEN vd.TOT_IT
ELSE 0
END )AS 'Não Medicamentos'FROM
V_PDV_VD_IT vd WITH (NOLOCK)
INNER JOIN V_EST_PROD_CPL_ARV_MERCADOLOGICA mix WITH (NOLOCK) ON
vd.CD_EMP = mix.CD_EMP
and vd.CD_FILIAL = mix.CD_FILIAL
and vd.CD_PROD = mix.CD_PROD
WHERE
vd.CD_EMP = 1
AND vd.CD_FILIAL BETWEEN 1 AND 998
AND NOT vd.CD_FILIAL = 99
AND NOT vd.CD_FILIAL BETWEEN 300 AND 997
AND vd.DT_VD between '20130601' AND '20130617'
AND NOT mix.CD_ARV_MERC_LINHA = 105
GROUP BY
vd.DT_VD,
vd.CD_FILIAL;
Depois podes dar um Store para gravar em um QVD
Ex:
Store NomeDaTabela INTO DiretórioDoArquivo.QVD;
Mas recomendo que ao invés de simplesmente jogar uma consulta sql direto em um arquivo QlikView, você realize o processo de extração dos dados nas tabelas do seu banco de dados, gravando-as em arquivos QVD para depois criar arquivos QVW que possam tratar a informação utilizando os recursos do QlikView.
Abs.
Raphael,
nao estou nomeando. Mas o qlik nao esta reconhecendo nada desse codigo.
Eu nao consigo jogar uma consulta no qlik para ele buscar a informação daquela forma?
Nesse caso, script que enviei, o qlik nao esta reconhecendo, apenas a instrução SQL esta na cor azul.
Para o QlikView reconhecer uma expressão sql você tem que primeiro criar uma tabela QlikView, ou seja,
<Nome da tabela>:
Expressão Sql
;
Para iniciar uma expressão sql você pode colocar diretamente o Select, ou utilizar
sql Select...
Estou mandando um arquivo QVW como exemplo para você entender melhor.
Raphael, funcionou cara.
Show de bola.
Muito obrigado pela ajuda.
Abraço