AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeiträume verwalten

Offene Frage von "smudo"
Ein Thema von smudo · begonnen am 2. Okt 2006 · letzter Beitrag vom 2. Okt 2006
Antwort Antwort
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

Re: Zeiträume verwalten

  Alt 2. Okt 2006, 08:57
Zitat von smudo:
Ich möchte nun wissen, wieviele Zeiträume maximal bzw. minimal bzw. zu einem bestimmten Zeitpunkt aktiv wahren
Hier also:
  • Max für 2006: 3
  • Min für 2006: 0
  • am 1.3.06: 2
Wie kann man das am Besten lösen? Die Daten liegen in einer DB vor, deshalb wäre SQL das Beste.
Hallo René,

versuche es einmal in folgender Richtung:
SQL-Code:
/*  geeignet für die letzte Abfrage  */
SELECT COUNT(*) FROM Table
    WHERE :Vergleichsdatum BETWEEN StartDatum AND EndDatum;
Für die anderen Abfragen nach Max/Min fällt mir zunächst nur der Umweg über StoredProcedures ein:
SQL-Code:
CREATE PROCEDURE Maximalwert ( VglVon DATE, VglBis DATE )
RETURNS ( Anzahl INTEGER ) AS
BEGIN
  SELECT MAX(*) FROM Zwischenwerte( VglVon, VglBis );
  SUSPEND;
END ^
/*  unter Verwendung der folgenden StoredProcedure  */
CREATE PROCEDURE Zwischenwerte( VglVon DATE, VglBis DATE )
RETURNS ( Anzahl INTEGER ) AS
  DECLARE VARIABLE iAkt INTEGER;
  DECLARE VARIABLE iBis INTEGER;
  DECLARE VARIABLE Vergleichsdatum DATE;
BEGIN
  iAkt = CAST(VglVon AS INTEGER);
  iBis = CAST(VglBis AS INTEGER);
  WHILE (iAkt <= iBis)
  DO BEGIN
    Vergleichsdatum = CAST(iAkt AS DATE);
    SELECT COUNT(*) FROM Table
        WHERE :Vergleichsdatum BETWEEN StartDatum AND EndDatum;
        INTO :Anzahl;
    SUSPEND;
    iAkt = iAkt + 1;
  END
END ^
Warnung: Ich habe das schnell hingeschrieben ohne exakte Kontrolle der Schreibweisen und Prüfung, ob dieser CAST wirklich so funktioniert; für andere SQL-Dialekte muss es ggf. anders formuliert werden. Auch kann ich mir lebhaft vorstellen, dass es schnellere Wege gibt.

Aber vielleicht liefert Dir das erfolgreiche Anregungen. Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz