Pular para o conteúdo
  • Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 5 meses atrás por Avatar de santosclaysantosclay.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #81622
    Avatar de leo_jfleo_jf
    Participante

      Blz gte.
      Sera que alguém consegue tirar uma dúvida.
      Tenho uma query que busca a maxima data – MAX(ChDtInicio), mas quando busco essa data tenho duas linhas de retorno codcategoria.
      Quando fiz a query somente com a data, veio corretamente a maior data, mas eu quando eu quis mostrar qual era o codigo que estava associado a essa maior data – codcategoria, ele se perde e não faz a associação.
      Fiz, então, uma query com select… count(1)…having count(1) >=1, pois assim iria buscar somente uma ocorrência, ou seja, a primeira com maior data. Mas não acontece. Alguem sabe o pq do Oracle está se perdendo.
      Com subquery funciona, mas já usei having count em outras ocasiões e funcionou.
      Resumindo: Quero buscar a maior data, e quando acho essa maior data quero uma coluna ao lado dessa maior data que é o codigo da categoria.
      Usando somente max tenho maior data, mas quando busco no select o codigo da categoria o select se perde e vem mais registros do que deveria, além de buscar a maior data e outras datas daquela matricula.
      Tenho como fazer isso usando o having count, pois o mesmo eu já usei para buscar duplicidade de informação.
      []s
      Ishii pela dica do decode, não sei pq não funcionou, mas por fim acabei mudando toda lógica e colocando condição(if) mesmo. Mas valeu cara.

      #81623
      Avatar de Marcio68AlmeidaMarcio68Almeida
      Participante

        Bom…
        Este assunto nada tem a ver com certificação…
        Mas… vamos lá…

        Pelo que eu entendi você tem as seguintes informações em sua tabela :
        DATA e CODIGO
        Se você pegar a maior data virão vários códigos referentes à essa data, certo ???
        Para resolver esse problema imagino que o melhor caminho seja por subquery :
        Select MAX (codigo)
        From Tabela
        Where data = (Select MAX (data) from Tabela)

        #81624
        Avatar de leo_jfleo_jf
        Participante

          Marcio,
          realmente com subquery funcionou. A duvida era o por que de não funcionar com o having count(*) visto que já usei em outros momentos, e funcionou.
          Minha dúvida era essa. Por que e como faria para usar um having count nessa situação. O que queria era buscar um registro unico visto que existe dois iguais, variando gerando a data.

          #81625
          Avatar de Marcio68AlmeidaMarcio68Almeida
          Participante

            Bom…
            Eu diria que tem a ver com o tipo de consulta que você fez…
            Por exemplo, você tem os seguintes dados :
            DATA CODIGO
            01/05/2008 0001
            02/05/2008 0003
            03/05/2008 0005
            03/05/2008 0005
            03/05/2008 0007

            Quando você executa a seguinte consulta :
            Select max(data), codigo
            From tabela
            Group by codigo
            Having count(*) > 1

            Então ele vai trazer a informação :
            DATA = 03/05/2008 e CODIGO = 0005

            Porém, se você tem apenas uma linha com CODIGO 0005 e uma com CODIGO 0007, então ele vai trazer duas linhas…
            Ficou claro ???

            #81626
            Avatar de leo_jfleo_jf
            Participante

              Fala Marcio
              Entendi o que tu explicou. O que está me deixando com dúvida, na verdade é como te expliquei.
              Quando faço o select.
              Exemplo: Select funcionario, max(datainicio) ,count(1)…. busca uma unica linha, ou seja, a maior data.
              Até ai blz. Mas quando peço para mostrar mais um campo no select ( esse campo esta na mesma tabela) o oracle se perde e busca as duas linhas que existem, mas somente peço para mostrar mais um campo no select além da data, o codigo da categoria.
              Isso que é minha duvida, e não consigo ver o por que disso acontecer.
              Realmente com a subquery funcionou, mas se funcionou com a subquery, por que não com count já que a logica é a mesma, apenas estou listando no select mais um campo.

              #81630
              Avatar de santosclaysantosclay
              Participante

                Olá amigos.

                Caro Leo apenas por curiosidade, você poderia disponibilizar:

                1 – O modelo da tabela em questão.
                2 – Alguns dados de exemplo (5 ou 6 linhas)
                3 – A clausula select que funciona.
                4 – A clausula select que não funciona (com este campos adicional).

                Apesar do seu problema já ter sido resolvido, gostaria de emular e entender o seu problema.

                Abraços Clayton.

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