我们有一个时间管理系统,我们的员工或承包商(资源)输入他们的工作时间,我们为此计算成本。我有一张历史成本表:
CREATE TABLE ResourceTimeTypeCost (
ResourceCode VARCHAR(32),
TimeTypeCode VARCHAR(32),
EffectiveDate DATETIME,
CostRate DECIMAL(12,2)
)
所以我有一个日期字段来标记生效日期。如果我们有一个记录是
('ResourceA', 'Normal', '2012-04-30', 40.00)
我添加了一条记录
('ResourceA', 'Normal', '2012-05-04', 50.00)
因此,4 月 30 日至 5 月 3 日之间输入的所有时间均为 40.00 英镑,4 日午夜之后的所有时间均为 50.00 英镑。我原则上理解这一点,但是您如何编写表达此逻辑的查询?
假设我的时间表如下所示
CREATE TABLE TimeEntered (
ResourceCode VARCHAR(32),
TimeTypeCode VARCHAR(32),
ProjectCode VARCHAR(32),
ActivityCode VARCHAR(32),
TimeEnteredDate DATETIME,
HoursWorked DECIMAL(12,2)
)
如果我将以下记录插入 TimeEntered 表
('ResourceA','Normal','Project1','Management1','2012-04-30',7.5)
('ResourceA','Normal','Project1','Management1','2012-05-01',7.5)
('ResourceA','Normal','Project1','Management1','2012-05-02',7.5)
('ResourceA','Normal','Project1','Management1','2012-05-03',7.5)
('ResourceA','Normal','Project1','Management1','2012-05-04',7.5)
('ResourceA','Normal','Project1','Management1','2012-05-07',7.5)
('ResourceA','Normal','Project1','Management1','2012-05-08',7.5)
我想获得一个按资源返回总成本的查询
所以在上面的例子中,它将是'ResourceA',(4 * 7.5 * 40) + (3 * 7.5 * 50) = 2325.00
谁能提供一个示例 SQL 查询?我知道这个例子没有使用 TimeType(即它总是“正常”),但我也想看看这是如何处理的
我无法更改数据库的结构。提前谢谢了