Announcement

Collapse
No announcement yet.

Abfrage: Nächster Wert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abfrage: Nächster Wert

    Hallo,

    ich bin ein SQL Neuling, muss aber leider dringend ein Problem lösen.

    Erklärt ist die Sache grundsätzlich einfach.
    Ich habe eine Tabelle mit einem Feld "A", das z.B. folgende (eindeutige) Werte beinhaltet:

    10
    20
    30
    40

    Ich übergebe der SQL einen Parameter @A.
    Nun suche ich den Datensatz mit dem nächsten Wert.

    Beispiel:
    Ich übergebe 30, dann brauche ich den Datensatz mit Feld A = 40.
    Übergebe ich allerdings 40, so brauche ich den Datensatz mit Feld A = 10.

    Kann mir jemand helfen ?

    Vielen Dank.

    woo73

  • #2
    Welches DBMS?

    Comment


    • #3
      Hallo,

      es ist MSSQL.

      Vielen Dank :-)

      Comment


      • #4
        [highlight="sql"]
        select
        TOP 1 <Feldliste>
        from
        <tabelle>
        where
        A > @A
        order by
        A;
        [/highlight]

        Comment


        • #5
          Hallo Markus,

          das ist es leider nicht ganz, da es ja wie eine Art Schleife sein muss.
          Denn wenn ich @A=40 übergebe (sprich den letzten, bzw. höchsten A-Wert), dann muss ich den ersten A-Wert erhalten. Also A=10.

          Hintergrund ist der, dass der Benutzer Artikel abarbeiten muss, bis alle erledigt sind. Immer ausgehend vom dem Artikel, bei dem er "reinspringt". Arbeitet er also den letzen Artikel ab, aber es gibt noch weitere offene Artikel, so muss die Anzeige wieder beim ersten offenen Artikel anfangen. Ist ein Artikel abgearbeitet, so wird er aus der Tabelle entfernt. Die Löschung des abgearbeiteten Artikels habe ich bereits implementiert. Es fehlt mir also nur noch der "Neubeginn".

          Danke.

          woo73
          Zuletzt editiert von woo73; 03.04.2008, 08:11.

          Comment


          • #6
            Mit einem SELECT geht das nicht, da muß schon eine Programmierlogik ran, die die Werte zwischenspeichern kann.
            Dirk

            Comment


            • #7
              Hallo,

              evtl. geht es ja doch mit einem SQL-Statement:
              [highlight=sql]
              SELECT TOP 1 <Feldliste>
              FROM (
              SELECT TOP 1 1 LfdNr, A Wert
              FROM <tabelle>
              where A > @A
              order by A
              UNION ALL
              select 2 LfdNr, min(A) Wert
              from <tabelle>
              )
              order by LfdNr;
              [/highlight]

              Gruß Falk
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment


              • #8
                Sachen gibt's, cool.
                Dirk

                Comment


                • #9
                  Hallo an alle,

                  die Sache läuft rund.
                  Vielen Dank für Eure Hilfe :-)

                  woo73

                  Comment

                  Working...
                  X