我有一张雇主表(表A)。我想用一个额外的日期列(表B)创建一个类似的表,以显示插入行的日期。我想在每个月底将表A中的行插入到新表中。有没有办法在SQL中自动执行此操作?
我听说您可以通过存储过程来做到这一点,但是我没有使用它们的经验,任何指导将不胜感激。
这是表格的样子:
MemberID First Last Department Salary Daily_Hours Active_Flag
100 Evan Turner Sales 75000 8 1
200 Ron Gold Marketing 80000 9 1
300 Bob Gun HR 50000 8 1
所需的输出:
ID MemberID First Last Department Salary Daily_Hours Active_Flag Date
1 100 Evan Turner Sales 75000 8 1 3/31/19
2 200 Ron Gold Marketing 80000 9 1 3/31/19
3 300 Bob Gun HR 50000 8 1 3/31/19
4 100 Evan Turner Sales 75000 8 1 4/30/19
5 200 Ron Gold Marketing 80000 9 1 4/30/19
6 300 Bob Gun HR 50000 8 1 4/30/19
7 100 Evan Turner Finance 95000 8 1 5/31/19
8 200 Ron Gold Marketing 80000 9 1 5/31/19
9 300 Bob Gun HR 60000 8 1 5/31/19
请注意,埃文·特纳(Evan Turner)如何改变部门并在5月获得了薪水的增加。鲍勃在同月也加薪了
这个想法是表A每月更新一次,我想将此更改记录到新表中。
答案 0 :(得分:1)
您可以创建如下所示的过程,并在每个月末计划。
CREATE PROCEDURE usp_InsertHistory
AS
BEGIN
IF CAST(GETDATE() AS DATE) = CAST(EOMONTH(GETDATE()) AS DATE)
BEGIN
INSERT INTO HistoryTable
(
Id
,MemberId
,First
,Last
,Department
,Salary
,Daily_Hours
,Active_Flag
,Date
)
SELECT Id
,MemberId
,First
,Last
,Department
,Salary
,Daily_Hours
,Active_Flag
,GETDATE()
FROM Table
END
END
答案 1 :(得分:0)
添加一个新列,记录插入行的时间:
alter table t add column createdAt datetime default getdate();
这将自动插入插入日期(向前移动)。