Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Rodar uma consulta SQL Server no script do Qlikview

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

1 Solution

Accepted Solutions
rphpacheco
Creator III
Creator III

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.

View solution in original post

4 Replies
rphpacheco
Creator III
Creator III

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.

Not applicable
Author

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.

rphpacheco
Creator III
Creator III

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.

Not applicable
Author

Raphael, funcionou cara.

Show de bola.

Muito obrigado pela ajuda.

Abraço