Hallo SQL SVR 2008 Gurus.Eingebettete CASE mit Ausdrücken in SQL Server 2008
Als SQL-Neuling hoffe ich auf eine Richtung. Ich habe eine SELECT-Anweisung, die einen Ausdruck gegen einen Feldwert für jeden Arbeiter überprüfen muss, um zu sehen, ob sie für eine bezahlte Mittagspause qualifizieren. Der Wert der Anzahl der Stunden, die sie arbeiten müssen, ist in ihrem Arbeitstabellen-Profil in einem Feld namens minimumhours, und ich bekomme ihre Arbeitsstunden von einem Ausdruck gegen ein Login- und Logout-Feld in einer Tabelle namens workflow. Die Aussage, die ich genäht habe zusammen ist wie folgt (das Startdatum und Enddatum werden vom Benutzer wählbare Werte):
DECLARE @StartDate AS DateTime
SET @StartDate = CAST('03/25/2012' AS DATE)
DECLARE @EndDate AS DateTime
SET @EndDate = CAST('03/31/2012' AS DATE)
SELECT
w.Firstname
,w.Lastname
,wf.Login
,wf.logout
,ROUND(CAST(DATEDIFF(MI, wf.Login, wf.Logout) AS DECIMAL)/60,2) AS [Hours]
,w.LunchDeduction AS [Lunch Deduction]
CASE [HoursBilled] =
WHEN DATEDIFF(hour, wf.Login, wf.Logout) < wf.MinimumHours THEN
ROUND(CAST(DATEDIFF(MI, wf.Login, wf.Logout) AS DECIMAL)/60,-
w.LunchDeduction,2)
WHEN DATEDIFF(hour, wf.Login, wf.Logout) >= wf.MinimumHours THEN
ROUND(CAST(DATEDIFF(MI, wf.Login, wf.Logout) AS DECIMAL)/60,- 0,2)
END
FROM Workers AS w
JOIN Workflow AS wf
ON wf.LoggedInWorkerid = w.ID
JOIN Roles AS r
ON w.RoleID = r.RoleID
WHERE (r.Descript = 'Hourly')
AND wf.Login >= @StartDate AND wf.Logout <= @EndDate
Ich habe keine Beispiele gesehen, schienen meine Anforderungen zu passen, und habe gehofft,
womit haben Sie Probleme? – RBarryYoung