ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
860
860
EMPFEHLEN
-
Hallo,
um Nachfragen vorzubeugen, ich kenne die Suchfunktion und habe auch schon einiges
herausbekommen, doch ich brauche Hilfe.
Ich habe eine Tabelle (MAGRP_HISTORIE) u. a.mit den Einträgen "MANR_F,GUELTIG_AB,h.MONATSPLANTEILNR_F".
In "MANR_F" ist die Mitarbeiternummer
In "GUELTIG_AB" das Datum als Zahl (z.B. 5560 für Heute)
In "MONATSPLANTEILNR_F" die Mitarbeitergruppe ( 1 bis 130)
Nun versuche ich eine Abfrage zu erstellen, die mir alle Mitarbeiter (MANR_F) ausgibt, die aktuell in der ,z.B. Mitarbeitergruppe Nr. 30, sind, also das höchste Datum (GUELTIG_AB) in (MONATSPLANTEILNR_F).
Ich habe dies vollbracht:
select h.MANR_F,MAX(h.GUELTIG_AB),h.MONATSPLANTEILNR_F
from MAGRP_HISTORIE h
Group By h.MANR_F,h.MONATSPLANTEILNR_F
having MAX(h.GUELTIG_AB) <= ? (wird von vb6 als Variable übergeben- aktueller TAG)
and h.MONATSPLANTEILNR_F =? (wird von vb6 als Variable übergeben)
ORDER BY h.MONATSPLANTEILNR_F
Nun bekomme ich natürlich immer nur das größte Datum in der Gewählten Gruppe, aber nicht das größte, das es für den Mitarbeiter gibt.
Da ich eine Auswertung nach (Mitarbeiter)-Gruppen mache (muß), kommt es nun vor, dass ein Mitarbeiter doppelt Geld bekommt, wenn er die Gruppe zwischenzeitlich gewechselt hat.
Für jede Hilfe bin ich dankbar
Jochen
-
Du hast kein DBMS angegeben, also habe ich hier mal eine Variante in T-SQL. So oder so sollte das Prinzip klarwerden. Der Übersichtlichkeit halber habe ich Gueltig_ab als Datum definiert, so werden die Ergebnisse besser lesbar. Funktioniert mit Integer aber genauso
USE TempDB
GO
CREATE TABLE MAGRP_HISTORIE (
MANR_F int ,
GUELTIG_AB datetime,
MONATSPLANTEILNR_F int
)
GO
INSERT INTO MAGRP_HISTORIE VALUES (1, '17 May 2005', 1)
INSERT INTO MAGRP_HISTORIE VALUES (1, '1 May 2005', 2)
INSERT INTO MAGRP_HISTORIE VALUES (2, '15 May 2005', 1)
INSERT INTO MAGRP_HISTORIE VALUES (2, '10 May 2005', 2)
INSERT INTO MAGRP_HISTORIE VALUES (2, '5 May 2005', 3)
INSERT INTO MAGRP_HISTORIE VALUES (3, '2 May 2005', 3)
GO
SELECT * FROM MAGRP_HISTORIE
GO
SELECT *
FROM MAGRP_HISTORIE m join (
SELECT h.MANR_F, MAX (h.Gueltig_ab) maxab
FROM MAGRP_HISTORIE h
WHERE h.Gueltig_ab < GETDATE() -- Hier kommt die Datumsvariable hin
GROUP BY h.MANR_F
) mmax on m.MANR_F = mmax.MANR_F AND m.GUELTIG_AB = mmax.maxab
WHERE m.MONATSPLANTEILNR_F = 1 -- Hier kommt die Gruppenvariable hin
GO
DROP TABLE MAGRP_HISTORIE
GO
-
Hallo,
ich bin begeistert, nach dem ich es etwas angepasst hatte (ich schrieb ja leider das DBMS nicht dazu), funktioniert es wunderbar.
Konnte es auch mehrfach wiederholen, nachdem ich das "drop Tabelle ... " herausgenommen habe (-:
Also vielen Dank !
Jochen
Ähnliche Themen
-
MySQL-Abfrage mehrfach sortieren
Von styler2go im Forum PHPAntworten: 7Letzter Beitrag: 07.07.10, 21:35 -
Abfrage mehrfach verwenden
Von luchs3 im Forum PHPAntworten: 10Letzter Beitrag: 06.07.09, 22:25 -
javax.telephony, TAPI, JTAPI - gleiche Anwedung mehrfach starten, DLL mehrfach laden
Von Animal21 im Forum JavaAntworten: 1Letzter Beitrag: 28.06.09, 08:28 -
MYSQL Abfrage Datensätze mehrfach (Anzahl n) ausgeben
Von xtra03 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 18.10.07, 09:16 -
Mehrfach-sortierte MySQL-Abfrage
Von Sunke im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 05.03.06, 10:55





Zitieren
Login





