Announcement

Collapse
No announcement yet.

Abfrage eines Datumsfeldes mittels arithmetischer Funktion max()

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

  • Abfrage eines Datumsfeldes mittels arithmetischer Funktion max()

    Hallo,

    für folgende Aufgabe finde ich einfach keinen Lösungsansatz:

    In einer Tabelle soll nur der Datensatz als Ergebnismenge zurückgegeben werden, dessen Gültigkeitsdatum entweder null ist oder das aktuelle Tagesdatum kleiner-gleich das Gültigkeitsdatum ist. Es kommt vor, dass mehrere Datensätze ein Gültikeitsdatumdatum haben. Normalerweise gibt es immer einen Satz, dessen Gültikeitsdatum null ist. Oft kommt es aber vor, dass es keinen Satz mit Gültikeitsdatum null gibt. Es muss aber dennoch sichergestellt werden, dass der letztgültige Satz, also der aktuellste Satz, anhand des Tagesdatum zurückgegeben wird. Dabei ist zu beachten, dass der Satz am aktuellsten ist, dessen Gültikkeitsdatum null ist, sollte es denn einen entsprechenden Satz geben. Ansonsten ist der Satz zurückzugeben, dessen Gültigkeitsdatum am nächsten am aktuellen Tagesdatum dran ist.

    Ich hoffe die Problematik halbwegs verständlich beschrieben zu haben.

    Sollte jemand mir beibringen können wie eine solche Abfrage auszusehen hat, wäre ich sehr dankbar.

    Viele Grüße
    Marco

  • #2
    http://entwickler-forum.de/showthrea...546#post182546
    Christian

    Comment


    • #3
      @Christian

      Schöne Endlosschleife
      docendo discimus

      Comment


      • #4
        Ist nur die Frage welchen Nutzen derartige Posts haben sollen? Solche Posts kann man auch direkt lassen, denn die haben so gar keinen Sinn.

        Ich habe meine Anfrage extra in zwei Rubriken gestellt, da in der DB2-Abteilung nicht wirklich viel los ist. Auch ein entsprechendes Standard-SQL wäre schon lehrreich.

        Danke trotzdem für die Aufmerksamkeit

        Comment


        • #5
          Hi Marco,

          ich kenne mich mit DB2 nicht aus, aber bei anderen DBMS würde es in etwa so funktionieren:

          select * from tabelle
          where Datum is null
          union
          select * from tabelle t1
          where not exists
          (select * from tabelle t2 where Datum is null)
          and t1.Datum=(select max(t3.Datum) from tabelle t3)

          Voraussetzung ist, dass es keine größeren Datumswerte als das aktuelle Datum gibt. Das war nicht ganz aus Deinem Text zu verstehen.

          Gruß
          docendo discimus

          Comment


          • #6
            @frauwue

            Klasse! Vielen Dank für deine Hilfe.

            Sorry, dass hatte ich vergessen. In dem Datumsfeld kann natürlich auch ein größeres Datum als das Tagesdatum stehen. Dann wäre der Satz noch gültig bis das entsprechende Datum erreicht ist.

            Viele Grüße
            Marco

            Comment

            Working...
            X