Mir ist gerade aufgefallen, das ich das oben beschrieben Problem hier gar nicht habe, da ich den Zeitraum ja fest vorgebe....
Trotzdem wäre es schön noch ein
SQL Query zu finden, das ohne den Zeitraum vorzugeben alle Zeiten der Woche X liefert.
Ich habe das
Query mal um Überstunden und reguläre Arbeitszeit erweitert. Außerdem ist es jetzt mit einer Kalender Tabelle Wocheweise gruppiert:
SQL-Code:
Select KW, ActivityDate,
RegularHours =
Case WHEN SUM(CASE FK_ActivityTypeID WHEN 1 THEN TimeSpan ELSE 0 END)
<= 480 THEN SUM(CASE FK_ActivityTypeID WHEN 1 THEN TimeSpan ELSE 0 END)
ELSE 480
end,
OvertimeHours =
Case WHEN SUM(CASE FK_ActivityTypeID WHEN 1 THEN TimeSpan ELSE 0 END)
> 480 THEN (SUM(CASE FK_ActivityTypeID WHEN 1 THEN TimeSpan ELSE 0 END) - 480)
ELSE 0
end,
SUM(CASE FK_ActivityTypeID WHEN 1 THEN TimeSpan ELSE 0 END) AS 'BillableHours',
SUM(CASE WHEN FK_ActivityTypeID <> 1 THEN TimeSpan ELSE 0 END) AS 'NonBillableHours',
SUM(Timespan) as TotalTime
FROM TB_AM_Hours H left join TB_AM_Calendar C on
CONVERT(varchar(8), H.ActivityDate, 112) = CONVERT(varchar(8), C.Date , 112)
WHERE
FK_UserID = 1
and ActivityDate >= '03.03.2008 00:00:00'
and ActivityDate <= '09.03.2008 00:00:00'
and FK_ProgramID = 1
group by KW, ActivityDate;