2012-01-28 99 views
2
select * 
From 
(
    select * 
    from order 
    order by creationtime desc 
) 
where rownum=1 and creationtime='12-feb-2010'; 

如何連接兩個SELECT語句?

select * 
from 
(
    select * 
    from 
    order by rate desc 
) 
where rownum<=2 and creationtim='12-dec-2011'; 

我想加入這兩個SELECT查詢,使用JOIN。兩個SELECT查詢來自同一個表的查詢。我不想用UNION

我該如何做到這一點?

+0

你爲什麼不想用'UNION'?這是功課嗎? – mwigdahl 2012-01-28 18:04:58

+0

是的,這是功課。 – user1099310 2012-01-29 05:33:44

回答

7

由於您未指明主鍵,因此很難從您的問題中知道所有應該在「ON」子句中的內容,但是這應該讓您知道您需要做什麼。

select * From 
(select * from order order by creationtime desc) A 
INNER JOIN (select * from order by rate desc) B 
ON A.rownum = B.rownum 
where A.rownum=1 and A.creationtime='12-feb-2010' 
AND B.rownum<=2 and B.creationtim='12-dec-2011' 
+0

加入一張表的主要想法是使用別名(Michael的例子中的A和B) – 2012-01-28 19:30:35

+0

ATR_KEY列是我的表中的主鍵。 – user1099310 2012-01-29 05:36:40

+0

和select語句的創建時間是相同的......感謝回覆 – user1099310 2012-01-29 15:07:16

1

使用row_number()分析函數獲取每個值的第一行。

select [list of columns] 
    from (select o.*, row_number() over (partition by creationtime) 
      from order o 
     where creatontime in ('12-DEC-2011', '12-FEB-2010') 
     ) 
where rn = 1;