【发布时间】:2013-03-20 06:26:10
【问题描述】:
所以我将数据导入到表格中(我们称之为 RAWDATA),格式如下:
EMPID | STARTDATE | ENDDATE | TOTALHOURS | TOTALWAGES
ABC123 | 01-01-2013 | 01-28-2013 | 160.0 | 1800.00
XYZ987 | 01-01-2013 | 01-31-2013 | 200.0 | 2500.00
我需要获取该数据,并将其按以下格式放入不同的表 (EMPDATA) 中:
EMPID |日期 |小时 |工资 ABC123 | 01-01-2013 | 5.71 | 64.29 ABC123 | 01-02-2013 | 5.71 | 64.29 ABC123 | 01-03-2013 | 5.71 | 64.29 ...... | .......... | .... | ...... XYZ987 | 01-01-2013 | 6.45 | 80.66 XYZ987 | 01-02-2013 | 6.45 | 80.66 XYZ987 | 01-03-2013 | 6.45 | 80.66 ...... | .......... | .... | ......
我的想法是在 STARTDATE 和 ENDDATE 之间做一个 DATEDIFF 来计算出多少天(在本例中:28)来分配小时数和工资,然后对于每一天,插入一个包含平均小时数和工资的行每天工作。这一切都将通过 RAWDATA 表上的触发器来完成。我只是不确定如何在触发器中从 STARTDATE 迭代到 ENDDATE。
编辑: 我还应该指出,导入的数据并不总是每行都有相同的开始/结束日期。我已经更新了第一个表格示例以表明这一点。
【问题讨论】:
-
您需要处理一行还是多行?
-
多行。我已经更新了问题
-
您需要支持的最大日期范围是多少? 31天,还是更长?这是 SQL Server 2000、2005、2008、2008 R2、2012 吗?
-
@D.R.我的答案中包含的演示也显示了多行。
标签: sql sql-server triggers