Bootstrap

oracle rownum用法排序,利用rownum分组排序去重

需求:SQL> select fyear,fseason,fsale from t_test order by fyear,fseason;

FYEAR    FSEASON      FSALE

----------     ----------         ----------

2012          1        200

2012          2        200

2012          3        300

2012          4        400

2013          1        200

2013          2        300

2013          3        300

需要展现如下形式:

FYEAR    FSEASON      FSALE

---------- ---------- ----------

2012          1        200

2        200

3        300

4        400

2013          1        200

2        300

3        300

如果年有多行一样,只展现一年的,别的都是空。

看了fuyuncat大师的 “” 博客,我突然明白我的如何解决了。

技巧就是利用rownum来做分组排序去重。

不多说,上代码。

SQL如下:

SQL> select decode(rownum - rn, 0, t.fyear, null) as fyear, fseason, fsale

2    from (select a.*, rn

3            from t_test a,

4                 (select fyear, min(rownum) as rn

5                    from (select fyear, fseason, fsale

6                            from t_test

7                           order by fyear, fseason)

8                   group by fyear) b

9           where a.fyear = b.fyear

10           order by a.fyear, a.fseason) t;

FYEAR    FSEASON      FSALE

---------- ---------- ----------

2012          1        200

2        200

3        300

4        400

2013          1        200

2        300

3        300

很精妙的rownum用法,解决困扰我很久的问题。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25027760/viewspace-1062102/,如需转载,请注明出处,否则将追究法律责任。

;