Syntax für SQL Statement in Averp

Erprobte Lösungen von Anwendern, die anderen Anwendern helfen, werden hier bereit gestellt

Moderator: SYNERPY

Antworten
AlexD
Beiträge: 42
Registriert: Mi Jul 04, 2007 11:48 am

Syntax für SQL Statement in Averp

Beitrag von AlexD »

Hallo,

baue mir gerade eine Statistik mittels SQL Statement in Averp zusammen.

Baue meine SQL Statements immer mit Access zusammen, da scheinen aber einige Funktionen "inkompatibel" zu sein.

Weiß jemand die passende AvERP / Firebird Funktion zu:
Access:
Format([Datum],"dd/mm/yyyy") - Das formatiert den Wert aus dem Feld Datum (z.B. 01.01.2007 17:23.59) in folgendes Format => 01.01.2007

AvERP / Firebird Funktion:
???

Wäre vielleicht auch eine Anregeung für einen Sammelthread, Funktion Access vs. Funktion AvERP / Firebird

Danke und Gruß

Alex
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

CAST(MeineVariable AS DATE)
AlexD
Beiträge: 42
Registriert: Mi Jul 04, 2007 11:48 am

Beitrag von AlexD »

Hallo,

vielen Dank für den Hinweis, komme leider nicht so ganz weiter: SQL ist halt nicht gleich SQL :-(

Wollte mir eine Statistik bauen, die mir alle IST-Zeiten der Mitarbeiter auflistet, die "gerade" sind -> sprich, wo eine Kommen oder Gehen Buchung fehlt.

Brauche das ganze, da wir Schichtarbeiter in unserer Firma haben und das Schicht-Zeiterfassungsmodul von AvERP leider noch nicht 100% ist...

Anbei eine Access Abfrage (mittels Firebird ODBC-Treiber) die schon ganz brauchbare Werte liefert: (vorerst auf eine Mitarbeiter ID heruntergetrimmt)
SELECT Format([Datum],"dd/mm/yyyy") AS Datum_getrimmt, BSM.BEZ, Sum(1) AS AnzahlBuchungen, [Anzahlbuchungen] Mod 2 AS [Gerade(0=gerade)]
FROM BSM INNER JOIN BSMB ON BSM.ID = BSMB.BSM_ID_PER_NR
WHERE (((BSM.ID)=27) AND ((BSMB.PLANKZ)=''))
GROUP BY Format([Datum],"dd/mm/yyyy"), BSM.BEZ
HAVING (((Format([Datum],"dd/mm/yyyy"))<=#7/25/2007#));

Als Averp- SQL Statement habe ich bisher nur folgendes hingebracht:
SELECT DISTINCT BSM.BEZ, CAST(BSMB.DATUM AS DATE) AS Datum_getrimmt, Sum(1) AS AnzahlBuchungen FROM BSM INNER JOIN BSMB ON BSM.ID = BSMB.BSM_ID_PER_NR
WHERE (((BSM.ID)=27) AND ((BSMB.PLANKZ)=''))
GROUP BY BSM.BEZ, BSMB.DATUM;

Eigentlich müsste ich wie folgt gruppieren: ... Group by CAST(BSMB.DATUM AS DATE) AS Datum_getrimmt ... das nimmt Averp aber leider nicht, dadurch ist auch die Summenbildung von "AnzahlBuchungen" falsch.

Hat jemand vielleicht eine Idee für mich.
Die Statistik soll mir die Mitarbeiter und den Tag ausweisen, an dem die Anzahl der Kommen/Gehen Buchungen ungerade ist.

Beispiel: Anzahlbuchungen = 2 (Mitarbeiter ist gekommen und gegangen)
Anzahlbuchungen = 1 (Mitarbeiter ist nur gekommen oder nur gegangen) - kann dann detailiert bei diesem Mitarbeiter und Datum nachgesehen werden.

Vielen Dank im voraus.

Gruß


Alex
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

GROUP BY 1, 2
AlexD
Beiträge: 42
Registriert: Mi Jul 04, 2007 11:48 am

Beitrag von AlexD »

Hallo,

vielen Dank an den Admin.

Habe hier mal den SQL String für eine Statistik, die eine Summe von KOMMEN und GEHEN IST-Zeiten jedes Mitarbeiters bildet und die ungeraden (1,3,5,7) separat ausweist.

Somit hat man die Möglichkeit, gezielt bei diesem Mitarbeiter die fehlende Buchnung nachzutragen.

Damit das Rad nicht 2mal erfunden werden muss, hier das Statement:
SELECT Cast(bsmb.Datum As Date) AS Datum_getrimmt, BSM.BEZ, Sum(1) AS AnzahlBuchungen
FROM BSM INNER JOIN BSMB ON BSM.ID = BSMB.BSM_ID_PER_NR
WHERE (((BSMB.PLANKZ)=''))
GROUP BY 1,2 HAVING (Sum(1)=1) or (Sum(1)=3) or (Sum(1)=5) or (Sum(1)=5);

Gruß


Alex
Antworten