Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenauswertung mit SQL-Befehl? (https://www.delphipraxis.net/112193-datenauswertung-mit-sql-befehl.html)

d6lpz 19. Apr 2008 12:16

Re: Datenauswertung mit SQL-Befehl?
 
Zitat:

Zitat von omata
Irgendwie bin ich jetzt verwirrt.

Wo kommt jetzt das S her? Wo ist das W geblieben?

Kannst du mal bitte alle deine Situationen auflisten, die es geben kann? Deine Beschreibungen machen einen nur kirre. Es ist völlig egal was nicht geht, erkläre einfach was gehen soll. Anders geht man da nur unter.

Was passiert bei...

WFFFFF: ein Zyklus?
SFFFFF: ein Zyklus? -> User1 Jan=2 ok
FFFFFF: kein Zyklus? -> User1 Feb=2 wieso? dort ist doch gar kein S also eigentlich 0?

Was passiert bei einem Wechsel über eine Monatsgrenze?

Was ist mit den anderen Statuskonstanten?

Soll das alles in einer SQL-Anweisung ausgewertet werden?

Du machst es einem wirklich sehr schwer dir zu helfen.

Sorry für die Verwirrung!
Am Anfang dachte ich nicht das das so schwierig werden würde und hatte deshalb um das Prinzip zu erklären einfach Beispieldaten "erfunden".
Mittlerweile sind die Daten in der Bsp. DB den wirklichen insoweit nahe als das ich weitere Felder entfernt und die richtigen Namen gegen User1/2/3 ausgetauscht habe.

Als ich heute früh das zu erwartende Ergebnis definierte, habe ich natürlich danach weiter versucht das Problem selbst zu lösen (bis jetzt leider ohne Erfolg). Dabei habe ich in der Bsp.DB Abfragen geändert und mit verschiedenen Datensitutaion getestet.
Dieser Stand spiegelt sich in den Daten der Bsp.DB wider.

"S" bedeutet Sick
"W" bedeutet Work
"F" bedeutet Free

Es geht also darum, festzustellen, wieviel Zyklen jemand durchgängig Krank gewesen ist. Nur unterbrochen durch "F" also Freie Tage.
Also bspw. "S"/"S"/"F"/"F"/"S"/"S" wäre ein Zyklus und nicht zwei.

Sorry nochmal, aber ich hoffe das es jetzt klarer geworden ist.

Dirk

omata 19. Apr 2008 16:29

Re: Datenauswertung mit SQL-Befehl?
 
So ein neuer Versuch...

SQL-Code:
SELECT MONTH(a.f_date) AS monat, YEAR(a.f_date) AS jahr, a.f_name,
       SUM(IIf(b.f_content = 'S', 1, 0)) AS anzahl
FROM tbl_daten_v2 a
LEFT JOIN tbl_daten_v2 b
  ON (    a.f_date = b.f_date + 1
      AND a.f_name = b.f_name
      AND b.f_content IN ('S', 'F')
      AND a.f_content <> b.f_content)
GROUP BY YEAR(a.f_date), MONTH(a.f_date), a.f_name
ORDER BY YEAR(a.f_date), MONTH(a.f_date), a.f_name
Gruss
Thorsten

d6lpz 19. Apr 2008 20:50

Re: Datenauswertung mit SQL-Befehl?
 
Zitat:

Zitat von omata
So ein neuer Versuch...

SQL-Code:
SELECT MONTH(a.f_date) AS monat, YEAR(a.f_date) AS jahr, a.f_name,
       SUM(IIf(b.f_content = 'S', 1, 0)) AS anzahl
FROM tbl_daten_v2 a
LEFT JOIN tbl_daten_v2 b
  ON (    a.f_date = b.f_date + 1
      AND a.f_name = b.f_name
      AND b.f_content IN ('S', 'F')
      AND a.f_content <> b.f_content)
GROUP BY YEAR(a.f_date), MONTH(a.f_date), a.f_name
ORDER BY YEAR(a.f_date), MONTH(a.f_date), a.f_name
Gruss
Thorsten

Ich bin happy das sich jemand noch mit meinem "Mist" beschäftigt und nicht aufgegeben hat!! :lol:
1. Bis jetzt habe den Effekt das sich bei einer Änderung des Users1 die Ergebnisse des User2 und User3 mit ändern noch nicht festgestellt.
2. Leider werden bei folgendem Eintrag zwei Zyklen gezählt und nicht einer:

nameID f_name f_date f_content
49 user2 13-Jan-08 W
52 user2 14-Jan-08 W
55 user2 15-Jan-08 S
58 user2 16-Jan-08 S
61 user2 17-Jan-08 F
64 user2 18-Jan-08 F
67 user2 19-Jan-08 S
70 user2 20-Jan-08 W

Ich höre aber heute auch erstmal auf - mir schwillt die Birne langsam.
Gruß und schönen Abend
Dirk

omata 19. Apr 2008 21:57

Re: Datenauswertung mit SQL-Befehl?
 
An dieser Stelle ist für reines SQL entgültig Schluss. Deine Wünsche sind zu kompliziert für SQL.
Wenn du ein ordentliches DBMS z.B. MSSQL benutzen würdest könntest du jetzt auf eine Stored Procedure zurückgreifen. Access ist dafür allerdings nicht mächtig genug.
Da bleibt dir wohl oder übel nur alles selber zu machen (über deine Schleifenvariante).

Sorry + Gruss
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Seite 3 von 3     123   

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 by Thomas Breitkreuz