2015-10-09 49 views
-1

我需要限制爲1000行的詳細信息表EL8_STGG_CEHL_EXCP對於EL8_STGG_CEHL_LOG中的每個唯一組合keys(AST_ID,PRCS_ID,PRCS_NME,PRCS_STEP_NME,SRC_APPL_LOG_DT)rownum和group by限制爲1000行的詳細信息

例如 - 如果有3個獨特的組合鍵,我希望在詳細表3000行。

SELECT 
     E.AST_ID, 
     E.PRCS_ID, 
     E.PRCS_NME, 
     E.PRCS_STEP_NME, 
     E.SRC_APPL_LOG_DT 
    FROM EL8_STGG_CEHL_EXCP E,EL8_STGG_CEHL_LOG L 
    WHERE 
     L.AST_ID = E.AST_ID 
     AND L.PRCS_ID = E.PRCS_ID 
     AND L.PRCS_NME = E.PRCS_NME 
     AND L.PRCS_STEP_NME = E.PRCS_STEP_NME 
     AND L.SRC_APPL_LOG_DT = E.SRC_APPL_LOG_DT   
     AND (L.CEHL_PICK_UP_IND IS NULL OR UPPER(L.CEHL_PICK_UP_IND) not in ('Y','P')) 
    GROUP BY 
     E.AST_ID, 
     E.PRCS_ID, 
     E.PRCS_NME, 
     E.PRCS_STEP_NME, 
     E.SRC_APPL_LOG_DT 

這將是巨大的幫助,如果任何人都可以幫助我

感謝

+0

你怎麼能有一千行的每個唯一組合,如果它是擺在首位獨特之處? – Vance

回答

0

未經測試...這是一個很大的數據來模仿。

基本上,我用我最喜歡的解析函數,row_number()

with limited as (
    select 
    L.*, 
    row_number() over (partition by AST_ID,PRCS_ID,PRCS_NME, 
     PRCS_STEP_NME,SRC_APPL_LOG_DT order by rownum) as rn 
    from EL8_STGG_CEHL_LOG L 
) 
SELECT 
    E.AST_ID, 
    E.PRCS_ID, 
    E.PRCS_NME, 
    E.PRCS_STEP_NME, 
    E.SRC_APPL_LOG_DT 
FROM 
    EL8_STGG_CEHL_EXCP E, 
    limited L 
WHERE 
    L.AST_ID = E.AST_ID 
    AND L.PRCS_ID = E.PRCS_ID 
    AND L.PRCS_NME = E.PRCS_NME 
    AND L.PRCS_STEP_NME = E.PRCS_STEP_NME 
    AND L.SRC_APPL_LOG_DT = E.SRC_APPL_LOG_DT   
    AND L.RN <= 1000 
    AND (L.CEHL_PICK_UP_IND IS NULL OR UPPER(L.CEHL_PICK_UP_IND) not in ('Y','P'))