2012-12-05 128 views
3

我试图创建PL查询/ SQL中得到以下结果:排序列然后通过第一个结果

数据:

Id  |  Date  | Request 
1  |  10/09/10 | 111 
2  |  09/09/10 | 100 
3  |  13/09/10 | 111 
4  |  01/08/10 | 222 
5  |  08/07/10 | 100 
6  |  06/07/10 | 111 
7  |  04/07/10 | 100 
8  |  01/06/10 | 222 

为了得到如下因素的结果:

Id  |  Date  | Request 
8  |  01/06/10 | 222 
4  |  01/08/10 | 222 
7  |  04/07/10 | 100 
2  |  09/09/10 | 100 
5  |  08/07/10 | 100 
6  |  06/07/10 | 111 
1  |  10/09/10 | 111 
3  |  13/09/10 | 111 

PS:在此exaxmple格式日期(日/月/年)

正如你可以在例如见,通过日期首先顺序,但当捕获第一行时,列出具有相同请求的所有行,当完成具有相同请求的行时,继续按日期排序...

任何人都可以使用此查询来帮助我吗?我尝试了几种方法,但没有预期的结果。

+0

展示一些你试过的方法 –

回答

8

您可以使用analytics

SQL> WITH data AS (
    2  SELECT 8 id, to_date('01/06/10') dat, 222 req FROM DUAL 
    3  UNION ALL SELECT 4, to_date('01/08/10'), 222 FROM DUAL 
    4  UNION ALL SELECT 7, to_date('04/07/10'), 100 FROM DUAL 
    5  UNION ALL SELECT 2, to_date('09/09/10'), 100 FROM DUAL 
    6  UNION ALL SELECT 5, to_date('08/07/10'), 100 FROM DUAL 
    7  UNION ALL SELECT 6, to_date('06/07/10'), 111 FROM DUAL 
    8  UNION ALL SELECT 1, to_date('10/09/10'), 111 FROM DUAL 
    9  UNION ALL SELECT 3, to_date('13/09/10'), 111 FROM DUAL 
10 ) 
11 SELECT ID, dat, req 
12 FROM DATA 
13 ORDER BY MIN(dat) over (PARTITION BY req), req, dat; 

     ID DAT    REQ 
---------- ----------- ---------- 
     8 01/06/2010   222 
     4 01/08/2010   222 
     7 04/07/2010   100 
     5 08/07/2010   100 
     2 09/09/2010   100 
     6 06/07/2010   111 
     1 10/09/2010   111 
     3 13/09/2010   111 
相关问题