Hallo Zusammen,
ich möchte eine MS
SQL-Server-View per INNER JOIN mit einer bestimmten Tabelle zu einer neuen Sicht verknüpfen. ->
http://www.phillsoft.de/Phill/work/abfrage.JPG
Soweit ist das kein Problem. Nun kann es aber in der Tabelle tPersonal_Aenderungen mehrere Datensätze geben, die zu einem bestimmten Mitarbeiter (tPersonal_fest) gehören. Praktisch ist aber immer nur ein Datensätz aktuell bzw. relevant... und zwar jeweils der, bei dem Aenderungsdatum_Beginn < now() und Aenderungsdatum_Ende > now() ist.
Meine Abfrage sieht im Moment wie folgt aus:
SQL-Code:
SELECT TOP 100 PERCENT dbo.sBer_PersPlanUebersicht.PK_tPersonal, dbo.sBer_PersPlanUebersicht.Pk_tPersonal_fest,
dbo.sBer_PersPlanUebersicht.Nachname, dbo.sBer_PersPlanUebersicht.Vorname, YEAR(dbo.sBer_PersPlanUebersicht.Datum) AS Jahr,
SUM(dbo.sBer_PersPlanUebersicht.Brutto) AS Brutto, SUM(dbo.sBer_PersPlanUebersicht.Urlaubsgeld) AS Urlaubsgeld,
SUM(dbo.sBer_PersPlanUebersicht.Weihnachtsgeld) AS Weihnachtsgeld, SUM(dbo.sBer_PersPlanUebersicht.Einmalzahlung) AS Einmalzahlung,
SUM(dbo.sBer_PersPlanUebersicht.VWL_AG) AS VWL_AG, SUM(dbo.sBer_PersPlanUebersicht.BAV_AG) AS BAV_AG,
SUM(dbo.sBer_PersPlanUebersicht.Brutto + dbo.sBer_PersPlanUebersicht.Urlaubsgeld + dbo.sBer_PersPlanUebersicht.Weihnachtsgeld + dbo.sBer_PersPlanUebersicht.Einmalzahlung
+ dbo.sBer_PersPlanUebersicht.VWL_AG + dbo.sBer_PersPlanUebersicht.BAV_AG - dbo.sBer_PersPlanUebersicht.BAV_AG - dbo.sBer_PersPlanUebersicht.BAV_AG)
AS SVBrutto,
SUM(dbo.sBer_PersPlanUebersicht.Brutto + dbo.sBer_PersPlanUebersicht.Urlaubsgeld + dbo.sBer_PersPlanUebersicht.Weihnachtsgeld + dbo.sBer_PersPlanUebersicht.Einmalzahlung
+ dbo.sBer_PersPlanUebersicht.VWL_AG + dbo.sBer_PersPlanUebersicht.BAV_AG) AS AGBrutto,
SUM(dbo.sBer_PersPlanUebersicht.Nettobetrag - dbo.sBer_PersPlanUebersicht.VWL_Sparbetrag - dbo.sBer_PersPlanUebersicht.Pfaendung)
AS zbetrag, SUM(dbo.sBer_PersPlanUebersicht.Nettobetrag) AS Nettobetrag, SUM(dbo.sBer_PersPlanUebersicht.AlleAGAnteile) AS AlleAGAnteile,
SUM(dbo.sBer_PersPlanUebersicht.Pauschalsteuer) AS Pauschalsteuer, SUM(dbo.sBer_PersPlanUebersicht.Umlageversicherung1)
AS Umlageversicherung1, SUM(dbo.sBer_PersPlanUebersicht.Umlageversicherung2) AS Umlageversicherung2, dbo.tPersonal_Aenderungen.Bat,
dbo.tPersonal_Aenderungen.Urlaubsanspruch
FROM dbo.sBer_PersPlanUebersicht INNER JOIN
dbo.tPersonal_Aenderungen ON dbo.sBer_PersPlanUebersicht.Pk_tPersonal_fest = dbo.tPersonal_Aenderungen.FK_tPersonal_fest
GROUP BY dbo.sBer_PersPlanUebersicht.PK_tPersonal, dbo.sBer_PersPlanUebersicht.Nachname, dbo.sBer_PersPlanUebersicht.Vorname,
YEAR(dbo.sBer_PersPlanUebersicht.Datum), dbo.sBer_PersPlanUebersicht.Pk_tPersonal_fest, dbo.tPersonal_Aenderungen.Bat,
dbo.tPersonal_Aenderungen.Urlaubsanspruch
ORDER BY dbo.sBer_PersPlanUebersicht.Nachname
Ich schätze ich hätte im Seminar "grundlagen
SQL" besser aufpassen sollen, aber leider weiß ich einfach nicht mehr, wie ich dem Join eine zusätzliche Bedingung geben kann. Wie gesagt, es sollen nur die aktuellen Datensätze aus tPersonal_Aenderungen Teil der Abfrage sein. Kann mir jemand einen Tip geben?
vielen Dank,
Phill