Pular para o conteúdo
  • Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 17 anos, 1 mês atrás por bbarroso.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #84981
    bbarroso
    Participante

      Prezados

      Estou tentando criar uma query com uma subquery para retornar o números total de usuários e usuários ativos os dois resultados ordenados por ano, so que esta dando o erro ORA – 00913, alguém pode me ajudar, segue a query.

      SELECT to_char(created, ‘YYYY’) ano,
      COUNT(to_char(created, ‘YYYY’)) qtd
      (sELECT to_char(created, ‘YYYY’) ano,
      COUNT(to_char(created, ‘YYYY’)) qtd
      FROM dba_users
      group by (to_char(created, ‘YYYY’)))
      FROM dba_users,
      dbasgu.usuarios
      WHERE cd_usuario = username
      AND sn_ativo = ‘S’
      GROUP BY to_char(created, ‘YYYY’)

      #84982
      bbarroso
      Participante

        [quote=”bbarroso”:3alh0fv5]Prezados

        Estou tentando criar uma query com uma subquery para retornar o números total de usuários e usuários ativos os dois resultados ordenados por ano, so que esta dando o erro ORA – 00913, alguém pode me ajudar, segue a query.

        SELECT to_char(created, ‘YYYY’) ano,
        COUNT(to_char(created, ‘YYYY’)) qtd
        (sELECT to_char(created, ‘YYYY’) ano,
        COUNT(to_char(created, ‘YYYY’)) qtd
        FROM dba_users
        group by (to_char(created, ‘YYYY’)))
        FROM dba_users,
        dbasgu.usuarios
        WHERE cd_usuario = username
        AND sn_ativo = ‘S’
        GROUP BY to_char(created, ‘YYYY’)[/quote]

        Bruno Soares
        Analista de Sistemas Jr

        #84985
        David Siqueira
        Participante

          Meu velho esse erro costuma aparecer quando tu possui mais de um registro pra retornar, e ambos são iguais, com a mesma clausula que tu esta usando, tente identificar se há duplicidade e qual é a duplicidade existente.
          Elimine-a e faça mais uma vez sua query.

          ABcs.
          David

          #84994
          Avatar photoLeonardo Litz
          Participante

            Cara,

            Seguint, nesta query temos alguns problemas…

            1º – Na query principal, o agrupamento apenas contempla a coluna ano, onde deverá contemplar a coluna da subquery.

            2º – Na sub-query, voce deverá listar apenas uma coluna, de forma que esta retorne apenas 1 registro. Dependendo de teu objetivo voce pode colocar um where nela filtrando por usuario. Mas de qualquer forma vc deverá tirar a listagem de uma dessas colunas.

            Coisa do tipo:

            SELECT to_char(created, ‘YYYY’) ano,
            COUNT(to_char(created, ‘YYYY’)) qtd,

                (sELECT  COUNT(to_char(created,'YYYY')) qtd2
                   FROM dba_users)
            

            FROM dba_users, dbasgu.usuarios
            WHERE cd_usuario = username
            AND sn_ativo = ‘S’
            GROUP BY to_char(created, ‘YYYY’), (sELECT COUNT(to_char(created,’YYYY’)) qtd2
            FROM dba_users)

            Vlw Leonardo Litz

            #84996
            bbarroso
            Participante

              Cara quase funcionou so na outra coluna e me mostra o total de usuários e não está agrupando por ano, ficou assim porque algumas condições não funcionaram.

              SELECT to_char(created, ‘YYYY’) ano,
              COUNT(to_char(created, ‘YYYY’)) qtd,
              (SELECT COUNT(to_char(created, ‘YYYY’))
              FROM dba_users)
              –group by to_char(created, ‘YYYY’)
              FROM dba_users, dbasgu.usuarios
              WHERE cd_usuario = username
              AND sn_ativo = ‘S’
              GROUP BY to_char(created, ‘YYYY’) –, SELECT COUNT(to_char(created, ‘YYYY’)) FROM dba_users

              [quote=”Litz”:j3pqr5ii]Cara,

              Seguint, nesta query temos alguns problemas…

              1º – Na query principal, o agrupamento apenas contempla a coluna ano, onde deverá contemplar a coluna da subquery.

              2º – Na sub-query, voce deverá listar apenas uma coluna, de forma que esta retorne apenas 1 registro. Dependendo de teu objetivo voce pode colocar um where nela filtrando por usuario. Mas de qualquer forma vc deverá tirar a listagem de uma dessas colunas.

              Coisa do tipo:

              SELECT to_char(created, ‘YYYY’) ano,
              COUNT(to_char(created, ‘YYYY’)) qtd,

                  (sELECT  COUNT(to_char(created,'YYYY')) qtd2
                     FROM dba_users)
              

              FROM dba_users, dbasgu.usuarios
              WHERE cd_usuario = username
              AND sn_ativo = ‘S’
              GROUP BY to_char(created, ‘YYYY’), (sELECT COUNT(to_char(created,’YYYY’)) qtd2
              FROM dba_users)

              Vlw Leonardo Litz[/quote]

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