Guten Tag,
ich bin jetzt schon einige Zeit am überlegen, wie ich eine Abfrage in unsere Zeiterfassung erstellen kann.
Folgende Informationen:
Es gibt die Tabelle "Zeiten" mit den Feldern "Personalnummer", "Lohnart" und "Dauer".
Als weitere Tabelle habe ich die Tabelle "lohnart" als Lohnartenbeschreibung, wo das Feld "Kostengruppe" herangezogen werden soll. Die Lohnarten aus der Tabelle Zeiten werden durch die Tabelle "Lohnart" den Kostengruppen zugeordnet.
Die Tabelle Zeiten gibt mir die diversen Buchungssätze mit Personalnummer, Lohnart und Dauer an.
Folgende Select-Anweisung gibt mir ein erstes Ergebnis
***
select
zeiten.pnr as p,
lohnart.kostengruppe as k,
sum(zeiten.dauer) as s
from
test.zeiten, test.lohnart
where
zeiten.lohnart=lohnart.lohnartnr
group by
zeiten.pnr, lohnart.kostengruppe
***
Jetzt habe ich die Ausgabe nach Kostengruppen zusammengefasst.
Als Beispiel
p k s
10 1 15
10 2 35
10 3 50
20 1 5
20 2 250
30 1 20
30 3 400
Für eine Übergabe an ein externes Programm, benötige ich die prozentuale Aufteilung, d.h. eine 4. Spalte, wo der prozentuale Anteil an den Gesamtminuten des Mitarbeiters angezeigt wird.
Als Beispiel
Personalnummer 10 hat auf 3 Kostengruppen gearbeitet, mit insgesamt 100 Min = 100 %. Auf die Kostengruppe 1 entfällt 15 %, auf 2 35 % und auf 3 50 %.
Somit hätte ich eine 4. Spalte mit den Prozentangaben.
Ich habe es mit einer verschachtelten Selectanweisung versucht, bekomme aber kein Ergebnis.
Für einen Mitarbeiter bekomme ich es hin, z.B.
*****
select
zeiten.pnr as p,
lohnart.kostengruppe as k,
sum(zeiten.dauer) as s,
(
select sum(zeiten.dauer)
from zeiten
where pnr=10
)
as zeitsumme
from
test.zeiten, test.lohnart
where
zeiten.lohnart=lohnart.lohnartnr
and pnr=10
group by
zeiten.pnr, lohnart.kostengruppe
***
Aber hier ist explizit ein Mitarbeiter gewählt. Wir haben aber 40. In der Beispieltabelle also noch PNR 20 und 30.
Hat jemand einen Lösungsvorschlag?
Gruss
Carsten
ich bin jetzt schon einige Zeit am überlegen, wie ich eine Abfrage in unsere Zeiterfassung erstellen kann.
Folgende Informationen:
Es gibt die Tabelle "Zeiten" mit den Feldern "Personalnummer", "Lohnart" und "Dauer".
Als weitere Tabelle habe ich die Tabelle "lohnart" als Lohnartenbeschreibung, wo das Feld "Kostengruppe" herangezogen werden soll. Die Lohnarten aus der Tabelle Zeiten werden durch die Tabelle "Lohnart" den Kostengruppen zugeordnet.
Die Tabelle Zeiten gibt mir die diversen Buchungssätze mit Personalnummer, Lohnart und Dauer an.
Folgende Select-Anweisung gibt mir ein erstes Ergebnis
***
select
zeiten.pnr as p,
lohnart.kostengruppe as k,
sum(zeiten.dauer) as s
from
test.zeiten, test.lohnart
where
zeiten.lohnart=lohnart.lohnartnr
group by
zeiten.pnr, lohnart.kostengruppe
***
Jetzt habe ich die Ausgabe nach Kostengruppen zusammengefasst.
Als Beispiel
p k s
10 1 15
10 2 35
10 3 50
20 1 5
20 2 250
30 1 20
30 3 400
Für eine Übergabe an ein externes Programm, benötige ich die prozentuale Aufteilung, d.h. eine 4. Spalte, wo der prozentuale Anteil an den Gesamtminuten des Mitarbeiters angezeigt wird.
Als Beispiel
Personalnummer 10 hat auf 3 Kostengruppen gearbeitet, mit insgesamt 100 Min = 100 %. Auf die Kostengruppe 1 entfällt 15 %, auf 2 35 % und auf 3 50 %.
Somit hätte ich eine 4. Spalte mit den Prozentangaben.
Ich habe es mit einer verschachtelten Selectanweisung versucht, bekomme aber kein Ergebnis.
Für einen Mitarbeiter bekomme ich es hin, z.B.
*****
select
zeiten.pnr as p,
lohnart.kostengruppe as k,
sum(zeiten.dauer) as s,
(
select sum(zeiten.dauer)
from zeiten
where pnr=10
)
as zeitsumme
from
test.zeiten, test.lohnart
where
zeiten.lohnart=lohnart.lohnartnr
and pnr=10
group by
zeiten.pnr, lohnart.kostengruppe
***
Aber hier ist explizit ein Mitarbeiter gewählt. Wir haben aber 40. In der Beispieltabelle also noch PNR 20 und 30.
Hat jemand einen Lösungsvorschlag?
Gruss
Carsten
Comment