Pular para o conteúdo
  • Este tópico contém 5 respostas, 2 vozes e foi atualizado pela última vez 1 ano, 3 meses atrás por Avatar de José Laurindo ChiappaJosé Laurindo Chiappa.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #162944
    Avatar de BarizonBarizon
    Participante

      Bom dia, prezados!

      Estou com uma consulta e gostaria de personalizar o nome dos campos, consegui fazer em uma parte deles, mas reparei que os que são usados no “where” dão erro da maneira que estou fazendo. Existe alguma maneira de fazer isso?

      SELECT *
      FROM (select n.tent_tiponot_1_o1,
      o.ordn_emitent_1 as “Emitente”,
      o.ordn_nrordem_1 as “Número da OS”,
      n.tent_nomefor_1 as “Cliente”,
      n.tent_nronota_1 as “Número da NF de Entrada”,
      o.ordn_nrosaid_1,
      TRUNC(SYSDATE – tent_recpdat_1) as dif_dias
      from notent n inner join ordnot o on n.tent_nronota_1 = o.ordn_nroentr_1
      )
      WHERE
      dif_dias between 160 and 180 and tent_tiponot_1_o1 = ’87’ and ordn_nrosaid_1 = ‘0’

      #162979
      Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
      Moderador

        Blz ? Então, a sintaxe/lógica é BEM SIMPLES : eu vejo que vc usou uma INLINE VIEW (ie, usou a query original como fonte de dados no FROM, encapsulando-a)… Nesse caso, por exemplo se vc escreveu :

        tent_nronota_1 as “Número da NF de Entrada”,

        a inline view RENOMEOU a coluna tent_nronota_1 para “Número da NF de Entrada” a a coluna original NÃO EXISTE MAIS, então (obviamente) o WHERE EXTERNO não a pode referenciar…

        Porém, olhando por cima, eu vejo que tanto a coluna dif_dias quanto a coluna tent_tiponot_1_o1 E a coluna ordn_nrosaid_1 vc NÃO COLOCOU ALIAS, então elas vieram com o mesmo EXATO nome que estavam, o WHERE parece estar usando os nomes certinho : ACHO que teu erro aí foi de OUTRA COISA, talvez datatypes errados, usar aspas num campo numérico, algo no estilo : PLEASE mostra pra gente EXATAMENTE o erro que dá, NA ÍNTEGRA….

        #162986
        Avatar de BarizonBarizon
        Participante

          Obrigado Chiappa, vou enviar a maneira que fiz da maneira que achei que daria certo e o erro que retorna na execução:

          SELECT *
          FROM (select n.tent_tiponot_1_o1 as “Tipo NF”,
          o.ordn_emitent_1 as “Emitente”,
          o.ordn_nrordem_1 as “Número da OS”,
          n.tent_nomefor_1 as “Cliente”,
          n.tent_nronota_1 as “NF de Entrada”,
          o.ordn_nrosaid_1 as “NF de Retorno”,
          TRUNC(SYSDATE – tent_recpdat_1) as “Dias NF Entrada”
          from notent n inner join ordnot o on n.tent_nronota_1 = o.ordn_nroentr_1
          )
          WHERE
          Dias NF Entrada between 160 and 180 and Tipo NF = ’87’ and NF de Retorno = ‘0’

          Erro: ORA-00920: operador relacional inválido

          #162991
          Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
          Moderador

            Sim, AGORA sim vendo o erro é possível a gente te mostrar : o que acontece aí é que essa coluna “Dias NF Entrada” vc criou entre aspas duplas (corretamente, já que vc QUER criar ele com espaços em branco E respeitando maiusc/minusc), mas veja o que vc escreveu no WHERE :

            WHERE Dias NF Entrada between….

            ORA, se vc CRIOU com aspas-duplas vc TEM QUE USAR com aspas-duplas, deveria ser :

            WHERE
            “Dias NF Entrada” between …..

            SEM as aspas, o Oracle ao encontrar esse Dias NF Entrada vai PENSAR que vc está se referindo a um identificador chamado Dias E a um outro chamado NF E a um outro chamado Entrada, na linguagem SQL o espaço em branco serve para SEPARAR os comandos/identificadores, dái o erro….

            Blz ?

            Abraços,

            Chiappa
            

            já que

            #162992
            Avatar de BarizonBarizon
            Participante

              Meu grande oráculo Chiappa, muito obrigado!

              #163021
              Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
              Moderador

                Deu certinho, né ? CONHECENDO o Conceito de que espaços em branco e quebras de linha SÃO considerados delimitadores (e assim sendo TEM significado para o PARSE), E QUE no Oracle ** TODOS OS IDENTIFICADORES ** , seja nome de variável, coluna, tabela, ou o que for, SE vc quiser respeitar maiusc/minusc além de usar caracteres com significado especial como espaços em branco vc TEM que os criar e usar SEMPRE dentro de aspas-duplas, fica biquinho de entender a questão e a resolver….

                Abraços,

                José Laurindo Chiappa

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress