Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #90927
    MarcioSouza
    Participante

      Olá pessoal,

      Estou com o seguinte problema, preciso exportar um cadastro para o excel, mas pelo o que sei o excel só aceita 65 mil linhas e meu cadastro tem um pouco mais, por isso escrevi a query abaixo, que funciona blz!

      SELECT * FROM SA1010 WHERE ROWNUM <=50000 AND A1_VEND = '42' AND A1_FILIAL = ' ' AND d_e_l_e_t_ = ' ' ORDER BY R_E_C_N_O_ ASC Mas qdo gerar a nova query com mais de 50 mil linhas a query abaixo não trás nada. Alguém pode apontar onde está meu erro? Obrigado a todos SELECT * FROM SA1010 WHERE ROWNUM >50000 AND A1_VEND = ’42’ AND A1_FILIAL = ‘ ‘ AND d_e_l_e_t_ = ‘ ‘ ORDER BY R_E_C_N_O_ ASC

      Abraços,

      #90928
      burga
      Participante

        Oi Marcio,

        O rownum é assinado em tempo de execução, então se não existe rownum = [1,2,…,n] não existe rownum = (n+1), então não tem um meio de você retornar diretamente registros com rownum > 1, e sim de 1 até m.

        O que você pode fazer é o seguinte:

        SELECT *
        FROM
        (SELECT tab.*, ROWNUM num
        FROM
        (SELECT *
        FROM SA1010
        WHERE A1_VEND = '42' AND A1_FILIAL = ' ' AND d_e_l_e_t_ = ' '
        ORDER BY R_E_C_N_O_ ASC ) tab
        )
        WHERE num >= 50000

        Isso deve resolver seu problema…

        [i]EDIT:

        Lembrando ainda que não significa que o seu primeiro select irá trazer os primeiros 50 mil registros de menor R_E_C_N_O_, pois, que eu saiba, a condição ROWNUM <= 50000 vai ser executada antes do ORDER BY. Ou seja, o Oracle irá retornar os primeiros 50 mil registros que encontrar pra depois ordená-los. Para que ele ordeve primeiro e depois retire os 50 mil primeiros você deve fazer o seguinte:[/i]

        SELECT tab.*
        FROM
        (SELECT *
        FROM SA1010
        WHERE A1_VEND = '42' AND A1_FILIAL = ' ' AND d_e_l_e_t_ = ' '
        ORDER BY R_E_C_N_O_ ASC ) tab
        WHERE ROWNUM <= 50000

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