2017-09-21 34 views
0

我有以下的作業表,其中我們有5列。在同一個表中獲取最高的子作業記錄

考慮JOB_ID是主鍵和parent_job_id將爲空父的工作,我已經給出了數值爲DATE列值 爲了方便.. 請考慮下面的表中的數據

JOB_ID ABC XYZ  DATE PARENT_JOB_ID 
    1 a b   1   null 
    2 a b   1    1 
    3 a b   2    1 
    7 a b   3    1 
    4 a b   3   null 
    5 a b   1    4 
    6 a b   2    4 

在這一點,我需要以這樣的方式,它應該給我下面的結果進行查詢,

JOB_ID ABC XYZ  PQR PARENT_JOB_ID 
    1 a b   1    null 
    7 a b   3    1 
    4 a b   3    null 
    6 a b   2    4 

他們是父作業+最新子作業只(其中的日期值最大值)

請幫忙/建議。 謝謝

回答

0

如果你的數據庫支持row_number()解析函數,再一個辦法是隻使用row_number()功能得到

最新子作業(其中的日期值最大)

然後讓父作業分開兩個查詢(... where PARENT_JOB_ID is null

,然後UNION ALL結果。

喜歡的東西:

select * from (
    select JOB_ID, ABC, XYZ, DATE, PARENT_JOB_ID from (
     select *, row_number() over(partition by PARENT_JOB_ID order by DATE desc) rn 
     from your_table 
     where PARENT_JOB_ID is not null 
    ) t 
    where rn = 1 
    union all 
    select JOB_ID, ABC, XYZ, DATE, PARENT_JOB_ID 
    from your_table 
    where PARENT_JOB_ID is null 
) t 
order by coalesce(PARENT_JOB_ID, JOB_ID) , JOB_ID 
相關問題