Автоматическая вставка данных - PullRequest
0 голосов
/ 18 января 2010

У меня есть имя таблицы Overtime Hours, в котором есть следующие столбцы Ot_ID, Shift_Date, Employee_ID, Hours.

Что мне нужно сделать, так это автоматически вставить набор значений в эти таблицы 1-го числа каждого месяца.

например, мне нужно добавить значения ('1/1/2010', 12345,4.6) для января, значения («2/1/2010», 12345,4,6) за февраль и т. д. за весь год.

Это добавление должно быть выполнено так, чтобы только определенный список сотрудников и значение часов было постоянным для каждого месяца. Я работаю на MS SQL Server 2000 в бэкэнде. и визуальная студия, Winforms на C Sharp в передней части.

Ответы [ 2 ]

1 голос
/ 18 января 2010

Служба агента SQL Server может планировать выполнение вашей задачи (вставки новых записей) каждый месяц;это может быть сделано полностью в MSSQL2000 и не требует какого-либо внешнего программирования.

0 голосов
/ 18 января 2010

Вы можете создать список месяцев, используя общее табличное выражение. Используйте перекрестное объединение, чтобы сгенерировать строку для каждого сотрудника для каждого месяца и вставить ее в таблицу часов.

Пример кода с табличными переменными:

declare @hourtable table (
    ot_id int identity(1,1),
    shift_date datetime,
    employee_id int,
    hours float)

declare @employees table (
    employee_id int
)   

insert into @employees select 1
insert into @employees select 2

;with months as (
    select cast('2009-01-01' as datetime) as month
    union all
    select dateadd(m,1,month)
    from months
    where month < '2009-12-01'  
)
insert into @hourtable
(shift_date, employee_id, hours)
select m.month, e.employee_id, 1.23
from months m
cross join @employees e

select * from @hourtable
...