Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Summe der Tage zwischen 2 Datums (https://www.delphipraxis.net/193896-summe-der-tage-zwischen-2-datums.html)

Walter Landwehr 20. Sep 2017 12:50

Datenbank: Firbird • Version: 2,5,5 • Zugriff über: IBO / IBExpert

Summe der Tage zwischen 2 Datums
 
Hallo,

ich habe eine Tabelle mit vielen Tagen. Ein Datum kann mehrfach vorkommen.

Nun möchte ich per SQL ermitteln wieviel Tage im Jahr ich gearbeitet habe.

Mein Ansatz war so:
Delphi-Quellcode:
Select count(R.behandlungsdatum) as Summe , R.behandlungsdatum from tbl_rechnungspositionen R where R.behandlungsdatum between '01.01.2016' and '31.12.2016'
group by R.behandlungsdatum
Das Ergebnis sieht so aus:

usw.

 
Eintrage Datum
14 05.01.2016
09 06.01.2016
die Anzeige der Tabelle ist ein bisschen Unübersichtlich. Es sind 2 Spalten (Eintrage und Datum).

Ich möchte aber nur eine Zahl die besagt wieviel Tage ist im Jahr gearbeitet worden.

Hat jemand eine Idee?

mkinzler 20. Sep 2017 13:08

AW: Summe der Tage zwischen 2 Datums
 
Die Anzahl Tage zwischen 2 Datumswerten kann man mit DateDiff ermitteln

https://firebirdsql.org/refdocs/lang...-datediff.html

Walter Landwehr 20. Sep 2017 13:23

AW: Summe der Tage zwischen 2 Datums
 
Ich will aber nicht die Anzahl der Tage zwischen 2 Datumswerten sondern die Anzahl der Tage an denen gearbeitet wurde als eine Zahl.

In Meinen Beispiel ist es eine 2.

Klaus01 20. Sep 2017 13:27

AW: Summe der Tage zwischen 2 Datums
 
.. und gearbeitet wurde wenn ein Eintrag in der Spalte "BehandlungsDatum" eingetragen wurde?

Sollte da nicht dann auch ein "select count(*)..." ausreichend sein?

Grüße
Klaus

SProske 20. Sep 2017 13:35

AW: Summe der Tage zwischen 2 Datums
 
Code:
Select count(distinct R.behandlungsdatum) as Summe from tbl_rechnungspositionen R where R.behandlungsdatum between '01.01.2016' and '31.12.2016'
Sollte doch funktionieren?

stifflersmom 20. Sep 2017 13:36

AW: Summe der Tage zwischen 2 Datums
 
Dann noch vorsichtshalber ein distinct und das sollte ausreichen

:zu spät

TBx 20. Sep 2017 13:44

AW: Summe der Tage zwischen 2 Datums
 
So aus dem Kopf könnte das so aussehen:

Anzahl der Behandlungstage im Zeitraum:

SQL-Code:
select count(cast(rp.behandlungsdatum as date)) as Summe
  from tbl_rechnungspositionen rp
  where cast(rp.behandlungsdatum as date) between '01.01.2016' and '31.12.2016'
Liste der Behandlungstage mit der Anzahl der Positionen pro Tag:

SQL-Code:
select cast(rp.behandlungsdatum as date) as Datum,
           count(rp.*) as Summe
  from tbl_rechnungspositionen rp
  where cast(rp.behandlungsdatum as date) between '01.01.2016' and '31.12.2016'
  group by 1
Da ist natürlich noch Optimierungspotential drin, was die Geschwindigkeit angeht.

Den Cast mache ich da übrigens, um möglicherweise vorhandene Zeitwerte zu eliminieren.

Walter Landwehr 20. Sep 2017 13:46

AW: Summe der Tage zwischen 2 Datums
 
Danke Sebastian das klappt.

TigerLilly 20. Sep 2017 14:08

AW: Summe der Tage zwischen 2 Datums
 
Darf ich nörgeln?!

Wenn man mit COUNT() etwas ermitteln, möge man das bitte nicht "Summe" nennen, sondern vielleicht "Anzahl"?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 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