3 Replies Latest reply: Dec 1, 2014 7:08 PM by Luciano Vasconcelos RSS

    Ajuda Not Exists

    Lucas Lima

      Bom dia pessoal, estou tentando implementar a expressão "NOT EXISTS" do SqlServer à seguir:

       

      set @DataMesAnt = CAST(CONVERT(CHAR(10), GETDATE(), 121) AS SMALLDATETIME)
      
      IF NOT EXISTS(SELECT * FROM NfiCabV ncv JOIN NfiItmV niv ON  (
                                                                     ncv.Nfi_Planta = niv.Nfi_Planta
                                                                     AND ncv.Nfi_NotFis = niv.Nfi_NotFis
                                                                     AND ncv.Nfi_Serie = niv.Nfi_Serie
                                                                    )
                               WHERE  ncv.Nfi_Planta in ('01','06')
                               AND ncv.Nfi_DatEmi = @DataMesAnt
                               AND ncv.Nfi_OriNfi = 'P'
                               AND ncv.Nfi_SitNfi IS NULL
                               AND ncv.Nfi_Serie IN ('U1', '1') ) 
      BEGIN
           set @DataMesAnt = CAST(CONVERT(CHAR(10), GETDATE()-1, 121) AS SMALLDATETIME)
      END 
      

      Alguém poderia me ajudar a montar esse script ou tem algum material à respeito que eu possa ler?

        • Re: Ajuda Not Exists
          Luciano Vasconcelos

          Boa tarde.

          Não sei o que você quer fazer, mas o Not Exists no Qlikview é para verificar se não existe valor para campos de mesmo nome na nuvem de dados. Não sei se você pode utilizar assim.

            • Re: Ajuda Not Exists
              Lucas Lima

              Boa tarde Luciano. Sou iniciante com Qlik e estava desenvolvendo algumas consultas até me deparar com esse trecho de código. Estou tentando implementar ele, não necessariamente com Exists, mas até agora não me veio uma solução em mente. Obrigado por ajudar.

               

              No problema em questão, eu preciso setar um valor em uma variável, mas só se aquela consulta acima retornar alguma linha. Nas minhas tentativas e erros não consegui ainda encaixar isso dentro de um IF no Qlik.

                • Re: Ajuda Not Exists
                  Luciano Vasconcelos

                  Boa noite.

                  O que você têm que fazer é criar um campo com a data que quer excluir.

                  Se for criar de banco, tem que fazer mais ou menos assim:

                   

                  Você cria uma tabela com o campo DataMesAnt.

                  A parte do select(cria a data coma função de banco) é a parte da função de banco e o load a parte do qlikview.

                   

                  MesAnt:

                  Load DataMesAnt;

                  SELECT  ........ as DataMesAnt

                  From tabela;


                  Depois você vai fazer a leitura da fato:


                  Fato:

                  Load *;

                  SELECT  ........ as DataMesAnt

                  From tabela

                  Where not exists(DataMesAnt);

                   

                   

                   

                  Segue o help:

                   

                  Essas funções são usadas quando um valor dos registros de dados carregados anteriormente é necessário para a avaliação do registro atual.

                  exists(campo [ , expressão ])

                  Determina se um valor de campo específico existe em um campo especificado dos dados carregados até o momento. Campo é um nome ou uma expressão de caractere que é avaliada para um nome de campo. O campo deve existir nos dados carregados até o momento pelo script. Expr é uma expressão avaliada para o valor de campo a ser pesquisado no campo especificado. Se for omitido, será assumido o valor do registro atual no campo especificado.

                  Exemplos:

                  exists(Mês, 'Jan') retorna -1 (verdadeiro) se o valor de campo 'Jan' puder ser encontrado no conteúdo atual do campo Mês.

                  exists(IDnr, IDnr) retorna -1 (verdadeiro) se o valor do campo IDnr no registro atual já existir em qualquer registro lido anteriormente naquele campo.

                  exists (IDnr) é idêntico ao exemplo anterior.

                  Load Funcionário, ID, Salário from Funcionários.csv;
                  Load Nome& ' ' &Sobrenome as Funcionário, Comentário from Cidadãos.csv where exists (Funcionário, Nome& ' ' &Sobrenome);
                  Serão lidos somente os comentários sobre os cidadãos que são funcionários.

                  Load A, B, C, from Funcionários.csv where not exists (A);
                  Isso equivale a executar um distinct load no campo A.