簡體   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