2011-01-06 54 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;