Tabellen verknüpfen

matte

Neuer Benutzer
Beiträge
1
Hi liebe Forumsgemeinde,

habe folgendes Problem (hoffe ich kann es erklären):
Habe eine Tabelle in denen ich Kernzeiten Speichere - hier hat jeder Mitarbeiter genau 7 Datensätze (Wochentage) gespeichert:

upload_2017-2-9_19-25-43.png

Dann habe ich eine zweite Tabelle in der die Täglichen Arbeitszeiten gespeichert werden:

upload_2017-2-9_19-26-8.png

Habe jetzt folgenden SQL:
SELECT za_Kernzeiten.TagNr, za_Tagewerk.NmBis, za_Tagewerk.NmVon, za_Tagewerk.Datum, za_Tagewerk.VmVon, za_Tagewerk.VmBis,
DATEPART(dw,Datum) as TagNr2, za_Kernzeiten.TagNr
FROM za_Kernzeiten INNER JOIN
za_Tagewerk ON za_Kernzeiten.TagNr = DATEPART(dw,za_Tagewerk.Datum)

würde gerne die SollStuden (Kernzeitentabelle) abziehen von den Täglich geleisteten Stunden (Tagewerketabelle) um an die Überstunden zu kommen.
Habt ihr eine Idee?
 

Anhänge

  • upload_2017-2-9_16-3-10.png
    upload_2017-2-9_16-3-10.png
    26,4 KB · Aufrufe: 2
  • upload_2017-2-9_19-16-10.png
    upload_2017-2-9_19-16-10.png
    26 KB · Aufrufe: 1
  • upload_2017-2-9_19-18-51.png
    upload_2017-2-9_19-18-51.png
    35,3 KB · Aufrufe: 1
  • upload_2017-2-9_19-25-35.png
    upload_2017-2-9_19-25-35.png
    23,6 KB · Aufrufe: 1
Werbung:
Wenn das Format TIME ist:
Code:
SELECT   za_Tagewerk.Datum,
     za_Kernzeiten.TagNr,
     za_Tagewerk.VmVon,
     za_Tagewerk.VmBis,
     za_Tagewerk.NmBis,
     za_Tagewerk.NmVon,
     datediff(minute,za_Tagewerk.VmVon,za_Tagewerk.VmBis) +
     datediff(minute,za_Tagewerk.NmVon,za_Tagewerk.NmBis) -
     datediff(minute,za_Kernzeiten.VmVon,za_Kernzeiten.VmBis) -
     datediff(minute,za_Kernzeiten.NmVon,za_Kernzeiten.NmBis) AS Ueberstunden,
     sum(
     datediff(minute,za_Tagewerk.VmVon,za_Tagewerk.VmBis) +
     datediff(minute,za_Tagewerk.NmVon,za_Tagewerk.NmBis) -
     datediff(minute,za_Kernzeiten.VmVon,za_Kernzeiten.VmBis) -
     datediff(minute,za_Kernzeiten.NmVon,za_Kernzeiten.NmBis)) OVER (ORDER BY za_Tagewerk.Datum) AS Uerberstunden_Saldo
FROM   za_Tagewerk
INNER JOIN za_Kernzeiten
ON     datepart(dw,za_Tagewerk.Datum) = za_Kernzeiten.TagNr
 
Werbung:
Oder, wenn du vielleicht Mehrfachberechnungen reduzieren willst:
Code:
SELECT   t2.Datum,
     t2.TagNr,
     t2.VmVon,
     t2.VmBis,
     t2.NmBis,
     t2.NmVon,
     t2.Ueberstunden,
     sum(t2.Ueberstunden) OVER (ORDER BY t2.Datum) AS Uerberstunden_Saldo
FROM   (

SELECT   za_Tagewerk.Datum,
     za_Kernzeiten.TagNr,
     za_Tagewerk.VmVon,
     za_Tagewerk.VmBis,
     za_Tagewerk.NmBis,
     za_Tagewerk.NmVon,
     datediff(minute,za_Tagewerk.VmVon,za_Tagewerk.VmBis) +
     datediff(minute,za_Tagewerk.NmVon,za_Tagewerk.NmBis) - t1.Soll AS Ueberstunden
FROM   za_Tagewerk
INNER JOIN (

SELECT   za_Kernzeiten.TagNr,
     datediff(minute,za_Kernzeiten.VmVon,za_Kernzeiten.VmBis) + datediff(minute,za_Kernzeiten.NmVon,za_Kernzeiten.NmBis) AS Soll
FROM   za_Kernzeiten

     ) t1
ON     datepart(dw,za_Tagewerk.Datum) = t1.TagNr

     ) t2
ORDER BY t2.Datum
 
Zurück
Oben