繁体   English   中英

将两个时间段合并为一个时间段

[英]Merge two time periods into one period

我正在使用由.NET和Oracle构建的HR系统,我们在其中存储:

  • 一张带有开始/结束日期的表格中的工作历史记录,例如组织,工作百分比,成本单位等
  • 带有开始/停止日期的另一个表中的薪水信息,例如月薪,时薪

每次更改此表中的任何属性时,我们都会创建一个新行并设置上一个期间的停止日期。

通常,当我们要向用户展示时,我们只从两个表中展示一小部分属性-例如组织和月薪,以查看员工薪水的历史发展,而这开始变得困难。

如果仅加入表,则每次更改都会得到一行,并且如果组织/月薪没有变化,但其他属性不变,则会向用户显示一个难看的令人困惑的列表-“为什么有两行”这是我们支持的一个非常相关的问题。 “亲爱的用户-这是因为我们将数据存储到表中”不是一个好答案;)

Data:

startdate   stopdate      organization jobpercent monthsalary
2011-01-01  2011-01-15    Sales        50         25000 
2011-01-16  2011-06-01    Sales        100        25000         
2011-06-02                Development  100        35000
Result when querying only for start/stop/organization monthsalary with no date merge

startdate   stopdate      organization monthsalary
2011-01-01  2011-01-15    Sales        25000 
2011-01-16  2011-06-01    Sales        25000         
2011-06-02                Development  35000

问题是我们必须合并所选属性相等的时间段-可以更改起始/结束日期,因为可以更改未选择的其他属性。

This is the result I want when querying only for start/stop/organization monthsalary. The first two rows are merged into one

startdate   stopdate      organization monthsalary
2011-01-01  2011-06-01    Sales        25000         
2011-06-02                Development  35000

我们通过性能很差的非常复杂的sql语句解决了此问题。

有没有人解决过类似的用例? 还是有办法的建议?

任何帮助都非常感谢!

最好的问候/安德斯

我在HR应用程序上做了类似的事情,我所做的是:

select distinct salary, xxx fields and then group by for all the fields

但是也许仅凭不同的薪水就足够了。 我必须说即时通讯是关于sql server,我不了解Oracle,但我想“ distinct”也在那里。 ;-)

organizationmonthsalary因为这些不变。 然后,您可以通过采取最小合并期间startdate和最大stopdate 假设期间之间没有空格:

with USRDAT as
       (select to_date('01/Jan/2011') as STARTDATE, to_date('15/Jan/2011') as STOPDATE, 'Sales' as ORGANIZATION, 25000 as MONTHSALARY from dual
        union all
        select to_date('16/Jan/2011'), to_date('01/Jun/2011'), 'Sales', 25000 from dual
        union all
        select to_date('02/Jun/2011'), null, 'Development', 35000 from dual)
  select min(STARTDATE) as STARTDATE, max(STOPDATE) as STOPDATE, ORGANIZATION, MONTHSALARY
    from USRDAT
group by ORGANIZATION, MONTHSALARY

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM