Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
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

Tags (1)
1 Solution

Accepted Solutions
rphpacheco
Contributor III

Re: Rodar uma consulta SQL Server no script do Qlikview

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.

4 Replies
rphpacheco
Contributor III

Re: Rodar uma consulta SQL Server no script do Qlikview

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

Re: Rodar uma consulta SQL Server no script do Qlikview

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
Contributor III

Re: Rodar uma consulta SQL Server no script do Qlikview

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

Re: Rodar uma consulta SQL Server no script do Qlikview

Raphael, funcionou cara.

Show de bola.

Muito obrigado pela ajuda.

Abraço