AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL: Jahresanteile des Vertags berechnen?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL: Jahresanteile des Vertags berechnen?

Ein Thema von romber · begonnen am 10. Jun 2013 · letzter Beitrag vom 13. Jun 2013
Antwort Antwort
Seite 3 von 3     123   
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#21

AW: SQL: Jahresanteile des Vertags berechnen?

  Alt 12. Jun 2013, 17:04
Die Lösung in #20 ist gut! Lob!

Die Datumermittlung ist pfiffig, mit dem Subquerys und values.

Anfangs- und Ende-Überlappungen berücksichtigt und natürlich den Einschluss-Zeitraum.
Funktionieren kann es nur nicht wenn der Vertrag länger als 12 Monate laufen könnte, dass ist hier ja aber nicht Anforderung gewesen.

Man könnte die Selects noch in eine UDF auslagern.
http://stackoverflow.com/questions/1...math-max-in-ne
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#22

AW: SQL: Jahresanteile des Vertags berechnen?

  Alt 12. Jun 2013, 21:54
Funktionieren kann es nur nicht wenn der Vertrag länger als 12 Monate laufen könnte, dass ist hier ja aber nicht Anforderung gewesen.
Verstehe nicht, wieso das nicht laufen sollte. Ich habe es mit irgendwelchen krummen Laufzeiten getestet und da der Zeitraum eh gemappt wird, nämlich auf den Anfangs/Endzeitraum, müsste das funktionieren. Aber Gegenbeispiele -oder eine Erklärung- sind natürlich immer besser. Hast Du eines?
  Mit Zitat antworten Zitat
tgvoelker

Registriert seit: 9. Sep 2002
Ort: Oelsnitz, Vogtland
43 Beiträge
 
Delphi 12 Athens
 
#23

AW: SQL: Jahresanteile des Vertags berechnen?

  Alt 13. Jun 2013, 11:30
generic, FBs Source funktioniert durchaus, wenngleich mir der SQL Server 2012 zum testen fehlt. Logisch ist das einwandfrei, sofern Verträge immer nur zum 1. beginnen können:

* Als erstes wird für jede Zeile entweder der 1.1.2012 oder das Anfangsdatum zurückgegeben, je nachdem, was größer ist
* dann wird das Enddatum oder der 31.12. zurückgegeben, je nachdem, was kleiner ist.
* dann fliegen alle die raus, bei denen nicht mindestens 1 Monat (Rundungsverhalten DateDiff? - bei Verträgen, die mitten im Monat beginnen) zwischen Anfang und Ende liegt.

Wenn Anfang nach dem 31.12.2012, dann fliegt der Tupel raus, weil dmax<dmin
Wenn Ende vor dem 1.1.2012, dann fliegt der Tupel raus, weil dmax<dmin
Wenn Anfang nach dem 1.1.2012 und Ende davor, dann ist dmin der richtige Anfang und dmax das richtige Ende.
Wenn Anfang vor dem 1.1.2012 und Ende zwischen 1.1.und 31.12., dann ist dmin 1.1. und dmax das richtige Ende
Wenn Anfang zwischen 1.1. und 31.12. und Ende danach, dann ist dmin der richtige Anfang und dmax 31.12.

Paßt also alles.

Ich würde das zwar anders machen (s.o.), weil ich meist alle Tupel haben und bei denen, die nicht betroffen sind, eine 0 drinstehen haben möchte, aber das ist kosmetisch.
Thomas Völker
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#24

AW: SQL: Jahresanteile des Vertags berechnen?

  Alt 13. Jun 2013, 11:58
Wie gesagt, war nicht Anforderung.

Wenn ein Vertrag länger als 12 Monate wäre, dann würde die Daten raus fallen. Wie du schreibst.
Anteilig müsste so ein Vertrag aber mit 12 Monatsbeiträgen berechnet werden.

Kommt nun auf das Verwaltungssystem an, es ist aber normal das ein Vertrag immer für 1 Jahr geschlossen wird und dann nur pro Jahr verlängert wird bzw. erneuert wird.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 13:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz