Если вы видите здесьКак сделать дело в SQL, как если ELSEIF заявление
CREATE TABLE timesheet
([username] varchar(31), [local_date] datetime, [hours] numeric, [wday] varchar(31))
;
INSERT INTO timesheet
([username], [local_date], [hours],[wday])
VALUES
('[email protected]', '1915-05-24 19:00:00', 3.75,'Sun'),
('[email protected]', '1915-05-25 19:00:00', 11,'Mon'),
('[email protected]', '1915-05-26 19:00:00', 10.25,'Tue'),
('[email protected]', '1915-05-27 19:00:00', 13,'Wed'),
('[email protected]', '1915-05-28 19:00:00', 13,'Thu'),
('[email protected]', '1915-05-29 19:00:00', 14,'Fri'),
('[email protected]', '1915-05-30 19:00:00', 9,'Sat'),
('[email protected]', '1915-05-31 19:00:00', 12,'Sun'),
('[email protected]', '1915-06-01 19:00:00', 12.5,'Mon')
;
select
username
, datepart(week,local_date) as Week
, sum(hours) total
, case when sum(hours) <= 40 then sum(hours) else 40 end as Regulartime
, case when sum(hours) > 40 then sum(hours) - 40 else 0 end as Overtime
from timesheet
group by username, datepart(week, local_date);
У меня есть таблица с расписания часов и дней. Мне нужно рассчитать регулярное время. Регулярное время должно быть только в будние часы и должно быть < = 40. Если его выходные или> 40, то это сверхурочное время. Как это сделать в SQL?
Я отправил свой ответ, потому что я неправильно интерпретировал этот на первый. Глядя снова, я вижу, что моя существенно похожа. Если вы добавите таблицу результатов в конец этого, я удалю мой. –
Секунды часов изменены на числовые (6,2) Даты, измененные с 1915 по 2015 год Удаленный подзапрос – Lori