2012-10-08 56 views
0

在選擇多行之後,我需要面對的問題,以遍歷每行,並獲取那些與第一行有一些相關信息的人。將第一行與其他行進行比較

例子:

select NAME,ENGLISH_GRADE,FRANCE_GRAE 
from (some complex query that have order by and returns 100 rows) WHOLE_ROWS 
where 

//Here I need to loop over WHOLE_ROWS and make something like that: 
//if(currentRow.ENGLISH_GRADE==WHOLE_ROWS(0).ENGLISH_GRADE) 
//fetch this row 
+0

我相信你必須爲此使用匿名PL-SQL塊。你看過文檔嗎? – Satya

+0

坦率地說,我只是需要它作爲一個沒有任何PL-SQL的純SQL。 – Echo

回答

1

基本上,你需要加入查詢到自身。您可以使用子查詢保理條款:

WITH complex_query AS 
    (... complex query here ...) 
SELECT 
    FROM complex_query cq1 
WHERE cq1.english_grade = (SELECT english_grade FROM cq1 
           WHERE rownum = 1) 

這是SQL Fiddle。您也可以通過分析來做到這一點,但這些對我來說似乎更難理解。

相關問題