Если у меня есть табличную переменную, как, что, как цикл по этой вар, чтобы сделать некоторую обработку:Как скопировать переменную таблицы, чтобы сделать конкретные вычисления?
DECLARE @userData TABLE(
userId int NOT NULL,
dayDate datetime NOT NULL,
transIn datetime NULL,
transOut datetime NULL,
attIn datetime NULL,
attOut datetime NULL,
MissionIn datetime NOT NULL,
MissionOut datetime NOT NULL,
empState varchar(10) NULL
);
INSERT INTO @userData
SELECT userid, trans_date,transtime_in,transtime_out,att_start_time,att_end_time,@Mission_fromdatetime,@Mission_todatetime,day_flag
FROM datatable_o a
WHERE a.userid = @userid AND a.trans_date = @date ORDER BY transtime_in ;
Согласно комментариям всего дела:
Если работа начинается: att_start_time
и заканчивается на att_end_time
(период работы)
Каждый сотрудник мог в течение одной и той же даты проверить и вывезти, чтобы мы могли следовать за ним. Зал регистрации ред в transtime_in
и выписка хранится в transtime_out
и у меня есть day_flag
, чтобы я мог знать, что день «W» рабочий день или в выходные дни «E»
Теперь, учитывая все эти данные в дополнение к emp_num ,date
Я хочу известково для сотрудника External mission over time
:
у меня есть четыре случая:
-
не
- Нет регистрации в отъезде & & Не работает день [выходные], чтобы работник должен принять весь период миссии в овертайме
- Нет регистрации в отъезде & & Рабочий день [Отсутствует], поэтому работник должен принять только период миссии из периода работы
- Есть регистрация-ауты & & Не работают день [неделя конец] поэтому работника должен принимать только период миссии из этих возвратов Диффузоров
- Есть чек-аут s & & рабочий день, поэтому работник должен принять только период миссии из этих проверок и на том же время без работы.
Пример:
emp_num date att_start att_end mission-in mission-out
672 2015-3-4 07:05:00 13:30:00 12:12:00 20:00:00
emp_num date trans_in trans_out
672 2015-3-4 06:54:00 11:10:00
672 2015-3-4 12:00:00 14:05:00
Какую обработку вы пытаетесь сделать? SQL вообще не любит циклы. Лучше обрабатывать данные как набор. Если вы дадите более подробную информацию, можно избежать использования цикла, повышая производительность полученного запроса. – Aidan
Вы также должны знать, что таблицы по сути не имеют порядка. Поскольку в вашем запросе 'SELECT' (например,' TOP' или 'FETCH') ограничение не выполняется,' ORDER BY' совершенно бессмысленно. –
@Aidan Я хочу сделать расчет и вставить в другую таблицу –