Busqueda de un campo con SELECT

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • anyita18
    Member
    • jun
    • 52

    #1

    Busqueda de un campo con SELECT

    Hola.
    Necesito hacer un desarrollo y agradecria enormemente su ayuda.
    El SELECT que debo hacer dice lo siguiente
    Si la Búsqueda trae más de coincidencia en ese caso se debe utilizar el año como referencia, el cual debe ser igual a ACCIT_GLX-GJAHR o el menor que le sigue en los registros seleccionados.
    Mi pregunta es, como hago para buscar el menor siguiente, es decir si el año en ACCIT_GLX-GJAHR es 2010 y el menor año siguiente es 2005 necesito rescatar ese valor....
    De antemano, muchisimas gracias!!!
    Anyelini
  • jtristan
    Senior Member
    • oct
    • 240

    #2
    A priori me da que no vas a poder hacerlo directamente con una sql abap. Tendrás que trabajar con la tabla intermedia.
    ¿Puedes ponernos un ejemplo más detallado de la tabla para hacernos una mejor idea?

    Un saludo.

    Comentario

    • nievesmp
      Member
      • abr
      • 95

      #3
      Originalmente publicado por anyita18
      Hola.
      Necesito hacer un desarrollo y agradecria enormemente su ayuda.
      El SELECT que debo hacer dice lo siguiente
      Si la Búsqueda trae más de coincidencia en ese caso se debe utilizar el año como referencia, el cual debe ser igual a ACCIT_GLX-GJAHR o el menor que le sigue en los registros seleccionados.
      Mi pregunta es, como hago para buscar el menor siguiente, es decir si el año en ACCIT_GLX-GJAHR es 2010 y el menor año siguiente es 2005 necesito rescatar ese valor....
      De antemano, muchisimas gracias!!!
      Yo lo intentaría con un bucle (algo así):

      var: val_gjahr like ACCIT_GLX-GJAHR.
      var: ano_ref like referencia.

      ** (Referencia) sería el campo o variable que contiene el valor en tu programa del año a buscar.


      ano_ref = referencia
      do while val_gjahr is not initial or ano_ref = 1900.
      select GJAHR into val_gjahr from ACCIT_GLX where GJAHR = ano_ref.
      if val_gjahr is initial.
      ano_ref = ano_ref - 1.
      endif.
      enddo.

      En este caso he puesto un valor de año mínimo (1900) a buscar para que el bucle no sea infinito y no tarde tanto en caso de no encontrar datos.

      Comentario

      • AAG1982
        Junior Member
        • oct
        • 5

        #4
        Hola:
        Yo probaria usando menor o igual en la condicion para seleccionar los registros y los ordenaria de mayor a menor usando order by.

        Seria algo medio parecido a esto:

        Select ....
        .
        .
        Where
        Año <= ACCIT_GLX-GJAHR
        .
        .
        order by año descending

        Espero que te ayude.

        Comentario

        • mystic_soul
          Member
          • sep
          • 76

          #5
          Bueno, supongo que tenes un año como referencia.. y por otro lado, a que tabla se hace referencia? porque accit_glx es una estructura..
          si no tenes la tabla adonde queres hacer el select, al año que tenes de referencia, le resta 1 año y listo!

          Saludos!

          Comentario

          Trabajando...