【发布时间】:2012-02-07 15:34:14
【问题描述】:
我正在使用一个用 .NET 和 Oracle 构建的 HR 系统,我们在其中存储:
- 一张表中包含开始/停止日期的就业历史记录,例如组织、工作百分比、成本单位等
- 另一个表中带有开始/停止日期的工资信息,例如月薪、小时薪
每次更改此表中的任何属性时,我们都会创建一个新行并设置上一个周期的停止日期。
通常,当我们想向用户展示 if 时,我们只展示两个表中的一小部分属性 - 例如组织和月份薪水,以查看员工薪水的历史发展,这就是它开始的地方要坚强。
如果我们只加入表格,每次更改都会得到一行,如果组织/月薪没有变化,但其他属性没有变化,则会向用户呈现一个丑陋的混乱列表 - “为什么会有两行”是我们支持的一个非常相关的问题。 “亲爱的用户 - 这是因为我们将数据存储到表中”不是一个好的答案;)
数据: 开始日期停止日期组织工作百分比月薪 2011-01-01 2011-01-15 销售额 50 25000 2011-01-16 2011-06-01 销售额 100 25000 2011-06-02 发展 100 35000 仅查询没有日期合并的开始/停止/组织月薪时的结果 开始日期 停止日期 组织 月薪 2011-01-01 2011-01-15 销售额 25000 2011-01-16 2011-06-01 销售额 25000 2011-06-02 发展35000问题是我们必须合并选定属性相等的时间段 - 可以更改开始/结束日期,因为可以更改其他未选择的属性。
这是我只查询开始/停止/组织月薪时想要的结果。前两行合并为一个 开始日期 停止日期 组织 月薪 2011-01-01 2011-06-01 销售额 25000 2011-06-02 发展35000我们已经通过一个非常复杂且性能不佳的 sql 语句解决了这个问题。
有没有人解决过类似的用例?或者有什么方法建议?
非常感谢任何帮助!
最好的问候 /安德斯
【问题讨论】: