2011-01-06 33 views
0

專家我想要寫的以下記錄的Oracle SQL查詢,顯示一行的每個DEPTID

-------------------------- 
R_ID D_ID  DEPT  
--------------------------- 
    1  200  CLERK 
    1  50  CLERK 
    2  190  MANAGER 
    2  134  DPTY MANAGER 
    3  12  SERVICE MANAGER 

和結果表A中的的Oracle SQL查詢應該是這樣的下方,即,在所有的第一行R_ID

-------------------------- 
R_ID D_ID  DEPT  
--------------------------- 
    1  200  CLERK 
    2  190  MANAGER 
    3  12  SERVICE MANAGER 

請幫助我。

+0

行沒有順序。你想用什麼邏輯來排列行? – Ronnis 2011-01-06 12:15:53

回答

0

正如Ronnis所說,我不確定你是如何訂購行的,但這是你如何做的一般。請注意,只需在ORDER BY子句中替換正確的順序即可。

SELECT DISTINCT R_ID 
    , first_value(D_ID) over (partition by R_ID order by D_ID) D_ID 
    , first_value(DEPT) over (partition by R_ID order by D_ID) DEPT 
FROM your_table 
ORDER BY R_ID; 

希望這有助於!

0
SELECT R_ID, D_ID, DEPT 
FROM 
(
SELECT R_ID, D_ID, DEPT, ROW_NUMBER() over(partition by R_ID order by D_ID) r 
) WHERE R=1 
0
 
SELECT min(r_id), min(d_id), dept 
FROM the_table_with_no_name 
GROUP BY dept;