Основной вопрос у меня есть, сколько запросов идут к этой таблице?
Если вы выполняете эту сложную логику в одном отчете, тогда, во всяком случае, используйте SELECT.
Но это кричит мне для лучшего решения.
Почему бы не использовать вычисленную колонку?
Поскольку это дата и недетерминированность, вы не можете использовать сохраненное ключевое слово для физического хранения вычисленного значения.
Однако этот код будет указан только в определении таблицы, а не в каждом запросе.
Я сделал случай для первых двух диапазонов и двух образцов элементов даты. Остальное зависит от тебя.!
-- Just play
use tempdb;
go
-- Drop table
if object_id('time_clock') > 0
drop table time_clock
go
-- Create table
create table time_clock
(
tc_id int,
tc_day char(3),
tc_time_in datetime,
tc_time_out datetime,
tc_division char(3),
tc_empid char(5),
-- Use computed column
tc_time_1 as
(
case
-- range 1
when
tc_division = 'KEP' and
cast(tc_time_in as time) between '04:30:00' and '07:29:59'
then
cast((convert(char(10), tc_time_in, 101) + ' 07:30:00') as datetime)
-- range 2
when
tc_division = 'KEP' and
cast(tc_time_in as time) between '17:30:00' and '19:29:59'
then
cast((convert(char(10), tc_time_in, 101) + ' 19:30:00') as datetime)
-- no match
else NULL
end
)
);
-- Load store products
insert into time_clock values
(1,'SUN', '20131201 06:53:57', '20131201 16:23:54', 'KEP', 'A007'),
(2,'TUE', '20131201 18:32:42', '20131201 03:00:47', 'KEP', 'A007');
-- Show the data
select * from time_clock
Ожидаемые результаты.
Добавлен тег SQL-сервер, потому что это явно SQL синтаксис сервера. –
что такое тип данных TIMEIN1 и TIMEINA – Jade
см. Мой ответ ниже. – Jade