2017-06-01 57 views
-2

我想要得到匹配條件的尾隨和前導記錄。 我想在oracle查詢中找到路徑和主要記錄

empid   last_nm 
----------- ------------------------- 
     179 Johnson     
     180 Taylor Maddy 
     178 Grant Son      
     34 John     
     180 Taylor Ross 
     178 Mia      
     179 Rocky 

如何在這裏補充 如:select * from emp where empid=34 我只得到emp_id爲34和last_nm約翰

emp表中包含的記錄

empid   last_nm 
----------- ------------------------- 
     178 Graham      
     179 Johnson     
     180 Taylor Maddy 
     178 Grant Son      
     34 John     
     180 Taylor Ross 
     178 Mia      
     179 Rocky     
     180 Siva 

回答

1

你可以這樣做使用ROWNUM僞列和MAX() OVER()解析函數:

SELECT empid, 
     last_nm 
FROM (
    SELECT e.*, 
     MAX(CASE WHEN empid = 34 THEN ROWNUM END) OVER() AS matched_rn, 
     ROWNUM AS rn 
    FROM employees e 
) 
WHERE rn BETWEEN matched_rn - 3 AND matched_rn + 3;