Привет SQL SVR 2008 гуру.
Как новичок в SQL, я надеюсь на какое-то направление. У меня есть оператор SELECT, который должен проверить выражение по значению поля для каждого работника, чтобы увидеть, имеют ли они право на оплачиваемый обеденный перерыв. Значение количества часов, которое им нужно для работы, находится в профиле их рабочей таблицы в поле под названием минимальное время, и я вычисляю их часы из выражения для поля входа и выхода в таблице, называемой рабочим процессом. Утверждение, которое я собрал, выглядит следующим образом (начальная и конечная даты будут выбираемыми пользователем значениями):
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
Я не видел ни одного примера, который бы соответствовал моим требованиям, и надеялся