0

Datum zweithöchstes Datum in Select Abfrage

Hallo liebe ninox-Community, stehe aktuell wieder vor einer kleinen Herausforderung in Zusammenhang mit einem Select, bei dem ich für eine Tabelle das zweithöchste Datum ermitteln möchte. In meiner Tabelle gibt es n Datensätze mit dem Datenfeld Datum. Nun möchte ich ausgehende von dem aktuellen Datum ermitteln, was das nächsttiefere Datum basierend auf dem aktuellen Datensatz ist:

let mycurDate := this.Date

let myprevDate := select Tabelle order by Datum

max(myprevDate.Datum) würde ja das höchste Datum anzeigen ich suche aber das zweithöchste.

Wie kann ich dies in dem Funktionsfeld darstellen?

5 Antworten

null
    • Stefan_Gahrmann
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Ich versuchs mal, bin auch noch nicht so sicher aber es lässt sich finden (Quelle unten):

    let Variable := (select Tabelle)" erstellt einfach ein Array mit den IDs der Datensätze aus der gewählten Tabelle, welches später mit "for i in Variable do... end" ...

    das ganze mit order by, wie schon geschehen sortiert das nach Datum

    Auf das Array hast Du via Array-Operator Zugriff, auf das 2. Element, was nicht mehr das erste höchste Datum ist. Kann das höchste Datum mehrfach vorkommen, lasse die Schleife soweit laufen bis ein Datum erreicht ist welches echt kleiner ist als das (erste) höchste, das muss nicht zwingend der 2. Datensatz sein.

    Die Syntax hab ich noch nicht parat.

    Viel Syntax und Dinge mit Tabellen und Schleifen/Bedingungen findest Du in

    Termin aus Start- und Enddatum generieren - Hilfe erhalten | Ninox Community

    Vielleicht hilft das schon.

      • Pro BoutiquenFonds GmbH
      • Eichelfr
      • vor 9 Monaten
      • Gemeldet - anzeigen

        Hallo Stefan, danke für den Ansatz. Werde die Idee mal aufgreifen und versuchen was daraus zu machen. Bei Erfolg, werde ich das hier posten... Frank

    • mirko3
    • vor 9 Monaten
    • Gemeldet - anzeigen

    Hallo Frank. Wie Stefan schon schrieb, wäre es wichtig zu wissen, ob ein Datum mehrfach auftreten kann und Du dann das gleiche Datum, welches aus dem vorhergehenden Datensatz stammt, als Ergebnis akzeptierst. Deshalb mal zwei Scripte, eins für Datum unique und eins für Datum mit Doubletten. Mirko

    let me := this.Datum;
    last(((select Tabelle)[Datum < me] order by Datum).Datum)
    
    let me := this.number(Datum) + this.number(Nr);
    last((((select Tabelle)[number(Datum) + number(Nr) < me] order by number(Nr)) order by Datum).Datum)
    
      • Stefan_Gahrmann
      • vor 9 Monaten
      • Gemeldet - anzeigen

       etwas eleganter als do for .. do.  😅 Das hätte ich sehen müssen 😎.

      • Pro BoutiquenFonds GmbH
      • Eichelfr
      • vor 8 Monaten
      • Gemeldet - anzeigen

       Hallo Mirko, dein Ansatz hat wieder einmal perfekt funktioniert. In meinem konkreten Fall ging es um unique-Werte. Den abstrakten Weg hast du ja bereits im Post beschrieben. Danke für den tollen Support! Frank

Content aside

  • vor 8 MonatenZuletzt aktiv
  • 5Antworten
  • 76Ansichten
  • 3 Folge bereits